为什么需要存储过程
1)数据不安全.网络传送SQL代码,容易被未授权者截获.
2)每次提交SQL代码都要经过语法编译后在执行,影响应用程序的运行性能.
3)网络流量大.对于反复执行的相同的SQL代码,将会在网络上多次传送增加网络传输量
什么是存储过程
存储过程(Procedure)是SQL语句和控制语句的预编译集合,保存在数据库里,可由应用程序
调用执行,而且允许用户声明变量,逻辑控制语句及其他强大的编程功能
存储过程可以包含逻辑控制语句和数据操作语句,他可以接收参数,输出参数,返回单个或多个结果集及返回值.
存储过程可以包含一条SELECT语句;也可以包含一系列使用控制流的SQL语句
存储过程的优点
1)执行速度快,效率高
2)减少网络流量
3)具有良好的安全性
存储过程的分类
1)系统存储过程(System Stored Procedures)
2)用户自定义的存储过程(User-defined Stored Procedures)
调用存储过程的语法:
EXEC [UTE] 存储过程名 [参数值]
其中,EXEC是EXECUTE的简写
用户自定义的存储过程
下面是一段使用C#语言自定义方法的代码
int sun (int a,int b)
{
int s;
s=a+b;
return s;
}
创建不带参数的存储过程
创建存储过程语法
CREATE PROC [EDURE] 存储过程名
[{@参数1 数据类型} [=默认值] [OUTPUT],
.....
{@参数n 数据类型} [=默认值] [OUTPUT]
]
AS
SQL语句
删除存储过程
语法:
OROP PROC[EDURE] 存储过程名
检测存储过程是否已经创建
语法:
IF EXISTS (SELECT * FROM sysobjects WHERE name =存储过程名 )
DROP PROCEDURE 存储过程名
GO
创建带输入参数的存储过程
存储过程中的参数分为两种:
1) 输入参数:可以在调用时向存储过程传递参数,此类参数可用来向存储过程中传入值
2)输出参数:如果希望返回值,则可以使用输出参数,输出参数后有"OUTPUT"标记,执行存储过程后,将把返回值存放在输出参数中,可供其他T-SQL语句读取访问.
创建带参数的存储过程
如果存储过程的参数后面有"OUTPUT"关键字,则表示此参数为输出参数;否则视为输入参数,输入参数还可以设置为默认值.
执行带参数的存储过程
语法
EXEC[UTE] [返回变量=] 存储过程名 [@参数1=]参数值1 [OUTPUT] | [DEFAULT],
......,
[@参数1=]参数值n [OUTPUT] | [DEFAULT]
其中,OUTPUT表明参数是输出参数,DEFAULT表示参数的默认值
处理错误信息
RAISERROR
在存储过程中,可以使用PRINT语句显示用户定义的错误信息.但是,这些信息是临时的,且只能显示给用户.
RAISERROR返回用户定义的错误信息时,可指定严重级别,设置系统变量记录所发生的错误