SQL SERVER 存储过程

1、什么是存储过程?

存储过程是SQL查询语句与控制流语句的预编译集合,并以特定的名称保存在数据库中。存储过程也是数据库对象。

  • 存储过程(procedure)类似于C语言中的函数
  • 用来执行管理任务或应用复杂的业务规则
  • 存储过程可以带参数,也可以返回结果
  • 存储过程可以包含数据操纵语句、变量、逻辑 控制语句等。

2、为什么要使用存储过程?

存储过程的优点:

  • 执行速度更快
  • 允许模块化程序设计
  • 提高系统安全性
  • 减少网络流通量

3、存储过程的分类

系统存储过程
  • 由系统定义,存放在master数据库中
  • 类似C语言中的系统函数
  • 系统存储过程的名称都以“sp_”开头或”xp_”开头
用户自定义存储过程
  • 由用户在自己的数据库中创建的存储过程
  • 类似C语言中的用户自定义函数

常用的系统存储过程:

sp_databases 列出服务器上的所有数据库。
sp_helpdb 报告有关指定数据库或所有数据库的信息
sp_renamedb 更改数据库的名称
sp_tables 返回当前环境下可查询的对象的列表
sp_columns 回某个表列的信息
sp_help 查看某个表的所有信息
sp_helpconstraint 查看某个表的约束
sp_helpindex 查看某个表的索引
sp_stored_procedures 列出当前环境中的所有存储过程。
sp_password 添加或修改登录帐户的密码。
sp_helptext 显示默认值、未加密的存储过程、用户定义的存储过程、触发器或视图的实际文本。

 

常用的扩展存储过程:xp_cmdshell
可以执行DOS命令下的一些的操作
以文本行方式返回任何输出
调用语法:
EXEC xp_cmdshell DOS命令 [NO_OUTPUT]

4、如何创建存储过程

定义存储过程的语法:

  • 和C语言的函数一样,参数可选
  • 参数分为输入参数、输出参数
  • 输入参数允许有默认值

CREATE  PROC[EDURE]  存储过程名

@参数1  数据类型 = 默认值 OUTPUT,

…… ,

@参数n  数据类型 = 默认值 OUTPUT

AS

SQL语句

GO

5、调用存储过程

EXECUTE(执行)语句用来调用存储过程。

调用的语法如下:

EXEC  过程名  [参数]

EXEC proc_getpc

如何删除一个存储过程?

drop 存储过程名 删除存储过程

6、带参数的存储过程

存储过程的参数分两种:
  • 输入参数
  • 输出参数
输入参数:
用于向存储过程传入值,类似C语言的按值传递;
输出参数:
用于在调用存储过程后
返回结果,类似C语言的
按引用传递;
return关键字可以终止存储过程或者返回数值

7、处理存储过程中的错误

可以使用PRINT语句显示错误信息,但这 些信息是临时的,只能显示给用户。
RAISERROR 显示用户定义的错误信息时
  • 可指定严重级别
  • 设置系统变量@@ERROR
  • 记录所发生的错误等
RAISERROR语句的用法如下:
  • msg_id:在sysmessages系统表中指定用户定义错误信息
  • msg_str:用户定义的特定信息,最长255个字符
  • severity:定义严重性级别。用户可使用的级别为0–18级
  • state:表示错误的状态,1至127之间的值
  • option:指示是否将错误记录到服务器错误日志中

RAISERROR (msg_id | msg_str,severity,

state WITH option[,…n]])

标签