简介
- 存储过程(
Stored Procedure
)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。
- Transact SQL存储过程可以接受输入参数,以参数形式返回输出值,或者返回成功、失败的状态信息。
系统存储过程
自定义存储过程
CREATE PROCEDURE 过程名
USE 教学管理
GO
CREATE PROCEDURE P_学生部分信息
AS
SELECT 学号,姓名,专业,所在院系,籍贯
FROM 学生表
USE 教学管理
IF EXISTS(SELECT * FROM sysobjects WHERE name='SC_infor' AND type='p')
BEGIN
DROP PROCEDURE SC_infor
END
GO
CREATE PROCEDURE SC_infor(@smajor CHAR(20), @cname CHAR(20))
AS
SELECTS.sno,sname,smajor,sdepa,O.cno,cname,grade
FROM student S, enrollment E, offering O, course C
where smajor=@smajor
AND cname=@cname
AND S.sno=E.sno
AND E.ono=O.ono
AND O.cno=C.cno
GO
执行存储过程
EXEC 过程名 [参数, ...]
DECLARE @专业 CHAR(20), @课名 CHAR(20)
SET @专业='计算机'
SET @课名='数据结构'
EXEC SC_INFOR @专业, @课名
带输出参数的存储过程
CREATE PROCEDURE P_计算平均成绩
(@学号 CHAR(7),@平均成绩 TINYINT OUTPUT)
AS
IF @学号 IS NULL RETURN 1
IF NOT EXISTS (SELECT * FROM 选课表 WHERE 学号=@学号)
RETURN 2
SELECT @平均成绩=avg(成绩)
FROM 选课表
WHERE 学号=@学号
接收存储过程状态值
EXECUTE @return_status = procedure_name
删除存储过程
DROP PROCEDURE 过程名