数据库中的存储过程相关知识与语法

  • Post author:
  • Post category:其他


一:存储过程的概念

存储过程(StoreProcedure)是SQLServer中一个重要的数据库对象。-proc

将一些能够完成特定功能或者需要多次使用的功能编写成各个子程序,并将子程序保存在SQLServer服务器中,用户通过子程序名来调用。

这些子程序就是存储过程。

二:存储过程的特点

①存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般T-SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

②当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

③存储过程可以重复使用,一旦创建了存储过程,以后可以在程序中多次调用。可减少数据库开发人员的工作量以及提高程序的可维护性。

④降低网络流量,存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。


三:存储过程的分类


①系统存储过程


②临时存储过程


③用户自定义存储过程


④扩展存储过程

四:系统存储过程

1.常用的系统存储过程

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6buR54yr55qE54yr,size_20,color_FFFFFF,t_70,g_se,x_16

五:用户自定义存储过程

–1.用户自定义的存储过程的语法


–create proc 存储过程名称


–【参数列表】


–as


–begin


— 具体的业务逻辑


–end


–go

注:PROCEDURE是创建存储过程的关键字,可以简写为

PROC

(通常使用简写方式)。

存储过程名需要符合T-SQL的标识符规范,用户自定义存储过程名最好不要用sp_和xp_开头,以免和系统存储过程和扩展存储过程混淆。

AS之后的T-SQL语句是体现存储过程功能的部分,是存储过程的核心部分。

2.执行存储过程

语法:


exec 存储过程名 [实参列表]

执行存储过程只是将这些功能性代码封装成了一个有名称的子程序。

创建存储过程的语句执行之后并不会调用其封装的功能性T-SQL语句,仅仅还必须使用



EXECUTE 存储过程名

”命令执行存储过程,EXECUTE还可以简写成EXEC。

3.俢改用户自定义存储过程

语法:


–ALTER   PROCEDURE   存储过程名


–参数列表


–AS


–T-SQL语句


4.删除存储过程


–drop proc 存储过程名称

六:用户自定义存储过程的参数

1.存储过程的参数分为两种:输入参数和输出参数。

2.声明参数时需要以下4条信息。

①:参数名称,与局部变量名的规范一致,需要@前缀;

②参数类型;

③参数默认值;

④参数的方向,指明参数是输入参数还是输出参数。

注:前面两部分是必须的,后面两部分为可选的,声明参数的语法格式如下。

在存储过程中声明参数不需要使用

declare


参数名  参数类型=默认值参数方向,…N

3:输入参数的作用:

①输入参数接收外界的数据带入到存储过程的内部T-SQL语句中进行执行,输入参数将提升存储过程的功能通用性。

②在声明输入参数时,无需指明参数方向,参数默认的方向是输入参数。

③可以使用“=”运算符在声明输入参数的同时为其赋予初始值,也可以不为其赋初始值。

4:执行带输入参数的存储过程

在执行带有输入参数的存储过程时,需要将实际参数值赋给存储过程中的参数。

有两种调用方式可以实现利用实参向存储过程的输入参数传值:使用参数名向参数传值;使用参数位置向参数传值。

5:输出参数的特点

如果我们需要从存储过程中返回一个或多个值,可以通过在创建存储过程的语句中定义输出参数来实现。

为了使用输出参数,需要在创建存储过程时为其指定

output

关键字。

6:执行带输出参数的存储

在执行带有输出参数的存储过程时,需要在执行存储过程语句之前定义变量,且左向存储过程传递参数时,代表输出参数位置上的实际参数后需要加OUTPUT关键字,这样才能在存储过程执行完毕之后,将存储过程中输出参数的值传递给实际参数。

注:如果在执行带输出参数的存储过程时,没有在表示输出参数的位置上为实际参数指明OUTPUT,并不会产生运行时错误,但是输出参数的值是不会传入到变量中去的。



版权声明:本文为weixin_53653315原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。