sql sever的sql语句有关存储过程与触发器

Posted 鸣灭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql sever的sql语句有关存储过程与触发器相关的知识,希望对你有一定的参考价值。

  1.  

    创建一个InsertS的存储过程,向S中插入一条记录,新记录的值由参数提供。如果未提供所在城市的值,由参数的默认值‘济南’代替。并验证该存储过程的执行情况。
    create procedure InsertS
    @Sno varchar(10),
    @sname varchar(20),
    @statu int,
    @City varchar(20)=济南
    as insert into s
    values (@Sno,@sname,@statu,@City)
    Go
    
    declare @Sno varchar(10)
    declare @sname varchar(20)
    declare @statu int
    declare @City varchar(20)
    execute InsertS  s9,方向,60
    go


    设置参数的默认值可以先在创建时设置一个值。

    1. 创建一个QuerySPJ的存储过程,根据用户提供的工程项目代码查询该工程项目的使用零件情况,并返回使用零件的总数量。
      create procedure QuerySPJ
      @Ja varchar(10),
      @zongde varchar(10) output
      as 
      select *
      from spj
      where jno=@Ja
      select @zongde= sum(qty) 
      from spj 
      where jno=@Ja
      Go
      
      declare @Ja varchar(10)
      declare @zongde varchar(10)
      execute QuerySPJ j3,@zongde output
      print @zongde

       

      创建一个触发器,使得在S表中删除某条记录时,SPJ表中的数据也进行相应的删除操作。

      create trigger deletespj on s
      after delete 
      as
      delete 
      from spj
      where sno=(select sno from  deleted)
      
      delete from s
      where sno=s2

      创建一个供应历史表hspj(sno,pno,jno,qty,username,modifydate),记录供应变化情况。实现这样的约束控制:如果spj表中的某条供应记录的qty发生改变,就在hspj表中插入一行历史记录,其中username为操作的用户名,modifydate为操作的时间。

      create table hspj(
      sno varchar(10) ,
      pno varchar(10),
      jno varchar(10),
      username varchar(50),
      modifydate varchar(50)
      )
      create trigger bianhua on spj
      after insert,update
      as insert into hspj select sno, pno,jno ,system_user,getdate()from inserted

       


      updata操作也属于inserted如上图

       

以上是关于sql sever的sql语句有关存储过程与触发器的主要内容,如果未能解决你的问题,请参考以下文章

存储过程与SQL语句如何选择

存储过程(Stored Procedure)与游标(Cursor)

Oracle数据库中有关触发器问题

什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么?

sql sever将两个表合起来语法

存储过程与触发器的区别