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如上图

       

posted @ 2016-05-24 23:01  鸣灭  阅读(829)  评论(0编辑  收藏  举报