1、存储过程的优点:
1、允许模块化程序设计
- 一次创建 多次使用,并可独立于程序源代码而单独修改、
2、执行速度快
- 已经通过语法检查和性能优化,存储在服务器,在执行是无需每次编译
3、减少网络流通量
- 一个需要数百行T=SQL代码的操作可以由一条存储过程单独实现
4、提高系统安全性
- 存储过程的定义文本可以被加密,使用户不能查看其内容
- 可将存储过程作为用户存储数据的管道,代替原有数据操作
存储过程分为 系统存储过程和用户自定义存储过程
系统存储过程 由系统定义,存放在master数据库中以sp_或者xp_开头
存储过程的分为带参数和不带参数:
带参数的存储过程 有 输入参数和输出参数,输出参数在定义时除了数据类型好友普加上关键字 :output
存储过程定义的语法:
CREATE PROC[EDURE] 存储过程名
[@参数1 数据类型 [= 默认值 | OUTPUT],
@参数n 数据类型 [= 默认值 | OUTPUT],...]
AS
T-SQL语句
GO
带输出类型参数的存储过程
根据学生姓名查找学员SQL分数
IF EXISTS (SELECT * FROM sys.procedures WHERE NAME='Proc_GetCMarkByStuName')
DROP PROC Proc_GetCMarkByStuName
GO
CREATE PROC Proc_GetCMarkByStuName @stuname VARCHAR(20),@cmark int OUTPUT
AS
SELECT @cmark = b.Score FROM StuInfo a, StuMarks b
WHERE a.StuID = b.StuID
AND b.Subject = 'SQL' AND a.StuName = @stuname
GO
调用存储过程
DECLARE @cmark INT
EXEC Proc_GetCMarkByStuName '李四', @cmark OUTPUT
PRINT '李四的SQL分数为:' + CONVERT(VARCHAR, @cmark)