简介

  • 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。
  • Transact SQL存储过程可以接受输入参数,以参数形式返回输出值,或者返回成功、失败的状态信息。

系统存储过程

大型数据库技术复习 —— 存储过程_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 过程名