主题:[讨论]有关存储过程和触发器的问题
haoboy0817
[专家分:880] 发布于 2007-09-30 20:58:00
大家好,小弟对SQL SERVER数据库中存储过程和触发器的问题有些疑惑,
希望哪位仁兄能够结合这方面的知识点给小弟指点迷津,小弟不胜感激!
回复列表 (共1个回复)
沙发
happyboy2007 [专家分:3900] 发布于 2007-10-01 11:02:00
存储过程相当于编程语言中的函数或是方法,是一系列SQL语句的集合。通过存储过程的名字并传递参数调用。
存储过程有5个优点
1) 统一操作流程
2) 提高执行效率
3) 可以重复利用
4) 安全性高
5) 可以重复利用
比如以Northwind为例,建立一个存储过程,查询products表所有商品的平均价格。
create procedure avg_Price(@avg out money)
as
select @avg=avg(unitprice) from products;
go
调用以上的存储过程用
declare @avg money
execute avg_Price(@avg)
触发器是一种特殊的存储过程,它不接受任何值也不返回任何值,有特定的事件触发(比如进行DML操作时触发)。
比如以Northwind为例,建立一个存储过程,查询products表所有商品的平均价格,如果平均价格<100则输出'平均价格小于100',否则输出'平均价格不小于100'。
create trigger t_avg
after insert on products
as
declare @avg money
select @avg=avg(unitprice) from products
if(@avg<100)
print '平均价格小于100'
else
print '平均价格不小于100'
我来回复