- 是存储在服务器上的一组预先定义并编译好的,用来实现某种功能的T-SQL语句。
- 存储过程是一种独立的数据库对象,在服务器上创建和运行。
- 类似于编程语言中的过程或函数。
创建存储过程
1、创建简单存储过程p_kc,查询所有课程信息。
CREATE PROC p_kc
AS
SELECT * FROM 课程
GO
EXEC p_kc
2、创建并执行带输入参数的存储过程p_xs,查询指定学号(作为输入参数)的学生姓名、课程编号、成绩。
CREATE PROCEDURE p_xs
@xh CHAR(6)
AS
SELECT 姓名,课程编号,成绩 FROM 学生,成绩
WHERE 学生.学号 = 成绩.学号 AND 学生.学号 = @xh
GO
EXEC p_xs '150102'
3、创建并执行带输入和输出参数的存储过程p_cj3,查询指定学号(作为输入参数)学生所选课程的课程名和成绩(两个作为输出参数)。
CREATE PROCEDURE p_kch
@kcm CHAR(20), @kch CHAR(3) OUTPUT
AS
SELECT @kch = 课程编号 FROM 课程 WHERE 课程名称 = @kcm
GO
DECLARE @kcms VARCHAR(20), @kchs CHAR(3)
SET @kcms = '数据结构'
EXEC p_kch @kcms, @kchs OUTPUT
PRINT @kcms + '课程的课程编号为:' + @kchs
删除存储过程
drop proc[edure] 存储过程名
修改存储过程
修改并执行带输入和输出参数的存储过程p_cj3,查询指定学号(作为输入参数)学生所选课程的课程名和成绩(两个作为输出参数)。
ALTER PROC p_cj3
@xh CHAR(6), @kcm CHAR(20) OUTPUT, @cj TINYINT OUTPUT
AS
SELECT @kcm = 课程名称, @cj = 成绩
FROM 课程,成绩
WHERE 成绩.课程编号 = 课程.课程编号 AND 成绩.学号 = @xh
GO
DECLARE @xhs CHAR(6),@kcms CHAR(20), @cjs CHAR(20)
SET @xhs = '150105'
EXEC p_cj3 @xhs,@kcms OUTPUT,@cjs OUTPUT
PRINT '学号为' + @xhs + '学生的所选课程的课程名为:' + @kcms + '成绩为:' + @cjs
查询存储过程
sp_help 存储过程名
sp_helptext 存储过程名