【SQL】存储过程

存储过程的概念

存储过程是独立存在于表之外的数据库对象,由被编译在一起的一组Transact-SQL语句组成。它可以被客户调用,也可以被另一个存储过程或触发器调用,它的参数可以被传递。

触发器的概念

触发器是一种特殊类型的存储过程,它不能显示地被调用,它是在指定的表中插入记录、更改记录或者删除记录时,被自动激活。所以,触发器可以用来对表实施复杂的完整性约束,当触发器所保护的数据发生改变时,触发器会自动被激活,从而防止对数据的不正确的修改。

二者的区别

触发器是特殊类型的存储过程,它能在任何试图改变表中由触发器保护的数据时执行。触发器主要通过事件进行触发而被执行,触发器不能直接调用执行,也不能被传送和接受参数,而存储过程可以通过存储过程名被直接调用。触发器与表有关,存储过程与表无关。

举例

例1

USE Stu_Course
--检查是否已存在同名的存储过程,若有,则删除。
IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'stu_info_pro' AND type = 'P')
DROP PROCEDURE stu_info_pro
GO
--创建存储过程
CREATE PROCEDURE stu_info_pro
AS
SELECT Sname,Ssex,Sdept
   FROM Student
GO
EXEC stu_info_pro

例2

USE Stu_Course
IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'stu_score_pro' AND type = 'P')
DROP PROCEDURE stu_score_pro
Go
CREATE PROCEDURE stu_score_pro
    @sname char(10),@cname char(10)
AS
SELECT a.Sname,c.Cname,b.Grade,c.Ccredit
FROM Student a,SC b,Course c
WHERE a.Sno=b.Sno and b.Cno=c.Cno and
c.Cname=@cname and a.Sname=@sname

EXEC stu_score_pro '李勇','数据库'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cout0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值