目录
- 存储过程
- 创建
- 修改
- 错误处理
1.RAISERROR
2.TRY … CATCH
3.存储过程
在创建C/S或B/S1应用程序时,可通过两种方式与服务器交互数据。一是将数据检索程序存储在客户端,通过客户端向服务器发送SQL语句来返回处理结果;另一种是将多个SQL语句组成一个事务处理过程,存储在服务器中,客户端像执行一条SQL语句一样调用该过程。
存储过程是经过编译后存储在服务器上的,减少了执行所需的传输代宽和时间;安全机制,可以授权用户具有某个存储过程的权限。
-
用户自定义存储过程
- SQL存储过程
- CLR(Common Language Runtime,公共语言运行时)存储过程
是对Microsoft .NET Framework公共语言运行时方法的引用,可以接收和返加用户提供的参数。是一种托管代码,需要.NET Framework的支持。
-
系统存储过程
sp_
开头。
注:下为SQL存储过程,CLR略。
3.1 创建
据内存不同,存储过程最大可以是128M。最多有2100个参数。
- 命名:未指定架构默认
dbo架构
;如与系统过程相同,则始终执行系统过程。 - 建议:1.避免使用
sp_
开头;2.使用显示架构(还能改善名称解析性能) - 补充查找顺序:若是批处理或动态SQL中调用存储过程,会继续在调用该存储过程的用户的默认架构中寻找;若是其它存储过程调用,则在所用存储过程的
myschma
中寻找;若都找不到,最后到dbo架构中查找。
-- 不带参
SELECT * FROM dbo.voc
GO
CREATE PROC proc_voc
AS
SELECT * FROM dbo.voc
GO
EXEC proc_voc -- 执行
-- 带参
IF OBJECT_ID('dbo.proc_voc') IS NOT NULL
DROP PROC dbo.proc_voc
GO
CREATE PROC dbo.proc_voc
@item varchar(10)
AS
SELECT *
FROM dbo.voc
WHERE item = @item
GO
EXEC proc_voc 'Chair'
-- 参数指定默认值
IF OBJECT_ID('dbo.proc_voc') IS NOT NULL
DROP PROC dbo.proc_voc
GO
CREATE PROC dbo.proc_voc
@item varchar(10),