SQL SERVER复习笔记06

来源:互联网 发布:mac装完win8不能联网 编辑:程序博客网 时间:2024/05/27 20:43
--十二.存储过程--创建存储过程create procedure book1_pr1asselect book1.书名 from book1--执行存储过程execute book1_pr1--查看存储过程sp_helptext book1_pr1--带输入参数的存储过程create proc book1_pr2@书名 char(20)asselect * from book1where 书名=@书名--执行带参存储过程exec book1_pr2 @书名='sql数据库'--带输出参数的存储过程,指定OUTPUT关键词 create proc book1_pr3@书名 char(20), @book1NUM smallINT outputasset @book1NUM=(select COUNT(*) from book1where 书名=@书名)print @book1NUM--执行时,输入参数要赋值,面输出参数不用赋值declare @书名 char(20), @book1NUM smallINTset @书名='sql数据库'exec book1_pr3 @书名,@book1NUM--修改,加密,重新编译存储过程alter proc book1_pr1@出版社 varchar(20)/*with encryption*/ with recompile  --在定义时重新编译asselect * from book1where 出版社=@出版社declare @出版社 varchar(20)set @出版社='中山大学'exec book1_pr1 @出版社--执行时重新编译declare @出版社 varchar(20)set @出版社='中山大学'exec book1_pr1 @出版社 with recompile--通过系统存储过程重新编译exec sp_recompile book1_pr1--十三.触发器,insert/delete/update--创建触发器create trigger book1_tr1on book1for insert  --触发器和触发语句都会执行asprint '插入成功'insert into book1 values ('134472','172','sql数据库',35,'中山大学','03-13-2008')--触发器执行,但触发语句不执行,用INSTEAD OFcreate trigger book1_tr2on book1instead of deleteasprint '不能删除!'delete from book1  --测试一下select * from book1  --发现表中数据并没有删除--if update(column_name),不用INSTEAD OF,而是用ROLLBACK TRANSACTION来回滚create trigger book1_tr3on book1for updateasif update(定价)beginrollback transactionend--测试一下update book1set 定价=45where 编号='101172'/*消息 3609,级别 16,状态 1,第 1 行事务在触发器中结束。批处理已中止。*/--管理触发器--1.sp_help trigger_name,了解触发器的一般信息,如名称,创建时间等exec sp_help book1_tr3--2,sp_helptext trigger_name,查看TRIGGER的定义信息exec sp_helptext book1_tr3--3,sp_depends trigger_name | table_name,查看触发器所引用的表或表涉及的所有触发器和存储过程exec sp_depends book1_tr3exec sp_depends book1--4,sp_helptrigger table_name,查看表所涉及所有触发器的信息exec sp_helptrigger book1--5,通过系统表来查看触发器的信息select *from sysobjectswhere type='tr'--6,禁止触发器alter table book1disable trigger trigger_name | all--启用触发器alter table book1enable trigger trigger_name | all
学习教材下载
原创粉丝点击