欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

存储过程学习以及扩展

程序员文章站 2022-05-30 23:19:12
...

概念:在SQL Server中,可以定义子程序存放在数据库中,这样的子程序称为存储过程,存储过程是数据库对象之一。使用存储过程的特点如下:

  • 存储过程在服务器端运行,执行速度快。
  • 存储过程执行一次后,其执行规划主驻留在高速缓存存储器,在以后的操作中,只需从高速缓存存储器中调用已经编译好的二进制代码执行,提高了系统性能。
  • 确保数据库的安全。使用存储过程可以完成所有的数据库操作。
  • 降低网络负载,提高效率。
  • 可以接受用户参数,亦可返回参数。

类型:

  • 系统存储过程(名字以“sp_”为前缀,存储在master里)
    • 可供使用的系统存储过程及其语法形式如下:
      • sp_help:用于显示存储过程的参数及其数据类型,sp_help[[@objname=]name]参数name为要查看的存储过程的名称。
      • sp_helptext:用于显示存储过程的源代码,sp_helptext[[@objname=]name]参数name为要查看的存储过程的名称。
      • sp_depends:用于显示和存储过程相关的数据库对象,sp_depends[@objname=]'object',参数object为要查看依赖关系的存储过程的名称。
  • 本地存储过程(存储在用户定义的数据库中)
  • 扩展存储过程(名字都以“xp_”为前缀,存储在master里)
  • 临时存储过程(名字以#开头)
  • 注意:用户定义存储过程不能以sp_或xp_开头。

创建存储过程

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

 

use 数据库名
create proc[edure] 存储过程名           --定义过程名
as
sql 语句......                          --执行操作,实现某种功能
go

 

  • 执行不带参数的存储过程语法
exec 存储过程名
  • 修改存储过程
    • 存储过程可以根据用户的要求或者基表的改变而改变。使用alter procedure语句可以更改先前通过执行create procedure语句创建的存储过程。
    • 语法:
use 数据库名
alter proc[edure] 存储过程名   --定义过程名
as
sql 语句                       --执行操作
go
  •  

删除存储过程:drop命令可以将一个或多个存储过程或存储过程组从当前数据库删除,其语法形式如下:

drop procedure 存储过程名1,......,存储过程名n
  • 创建带参数的存储过程
    • 语法:

 

use 数据库名
create proc[edure] 存储过程名   --定义过程名
@变量名1  数据类型               --定义输入参数
......
@变量名n  数据类型
as
sql 语句                         --执行操作
go
    • 执行带输入/通配符参数的存储过程
      • 语法:

 

exec 存储过程名
@变量名1=变量值,
......
@变量名n=变量值