回 帖 发 新 帖 刷新版面

主题:[讨论]有关存储过程和触发器的问题

大家好,小弟对SQL SERVER数据库中存储过程和触发器的问题有些疑惑,
希望哪位仁兄能够结合这方面的知识点给小弟指点迷津,小弟不胜感激!

回复列表 (共1个回复)

沙发

存储过程相当于编程语言中的函数或是方法,是一系列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'


我来回复

您尚未登录,请登录后再回复。点此登录或注册