07章 存储过程

一:存储过程的定义:

在数据库服务器上(DB Server)存储的预先编译好的一堆SQL语句

是SQL语句和控制语句的预编译集合,保存在数据库里,可由应用程序调用执行,而且允许用户声明变量、逻辑控制语句及其他强大的编译功能。它可以接收参数、输出参数、返回单个或多个结果集及返回值。

为什么需要存储过程???

   增加数据库的安全性

二:存储过程的优点:

①:执行速度更快

②:允许模块化程序设计

③:提高系统安全性

④:减少网络流通量

三:存储过程的分类:

1.系统存储过程:

以“sp_”开头,并存放在Resource数据库中

常用的系统存储过程:

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

语法:

exec [UTE] 存储过程名 [参数值]

注:如果执行存储过程的语句是批处理中的第一个语句,则可以不指定EXECUTE关键字

eg:

sp_databases MySchool

GO

2.常用的扩展存储过程

语法:

exec xp_cmdshell DOS 命令[no_output]

注:exec表示调用存储过程,no_output为可选参数,设置执行DOS命令后是否输出返回信息

3.用户自定义的存储过程

创建不带参数的存储过程:

① 创建存储过程

语法:

create  procedure  存储过程名
  
         [{@参数1 数据类型} [=默认值] [output],

             ........,
 
                {@参数 n 数据类型} [=默认值] [output]

         ]
          as

          SQL语句

② 删除存储过程

语法:

drop procedure 存储过程名

注:参数置于as前,并且变量前不需要加declare关键字

    as后的变量需要declare关键字

eg:创建一个可以查询所有学生信息的存储过程

CREATE  PROCEDURE  
AS
select * from Student

创建带输入参数的存储过程:

①:创建带参数的存储过程

如果存储过程的参数后面有"output"关键字,则表示此参数为输出参数;否则视为输入参数,输入参数还可以设置为默认值。

②:执行带参数的存储过程

语法:

exec [返回变量=] 存储过程名 [@参数1=]参数值1 [output] |[default],

.......

[@参数1=]参数值n [output] |[default]

eg:

从Result,Student表中查询成绩大于90分的学生的  姓名和成绩:

四:带output参数的存储过程:

五:处理错误信息

raiserror语句:

语法:

raiserror ({msg_id | msg_str}{,severity,state} [with option[,....n]])

分析:利用raiserror语句生成用户定义的错误信息并返回到应用程序。

六:补充

TruncateDelete 三点区别:

1.   Truncate不能加where,而delete可以

2.   Truncate删除速度快,不记录日志。不能恢复数据

      而delete删除速度慢,记录日志,可以恢复数据

3.   Truncate 截断表。ID从1开始编号

      delete 不会从1开始编号

原文地址:https://www.cnblogs.com/WJ-163/p/5276302.html