sql sever的sql语句有关存储过程与触发器
-
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
设置参数的默认值可以先在创建时设置一个值。 - 创建一个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如上图
- 创建一个QuerySPJ的存储过程,根据用户提供的工程项目代码查询该工程项目的使用零件情况,并返回使用零件的总数量。