Heim > Datenbank > MySQL-Tutorial > 数据库对象存储过程 轻松走进数据库系列八

数据库对象存储过程 轻松走进数据库系列八

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 15:12:04
Original
1199 Leute haben es durchsucht

存储过程概念 存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可独立执行或由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程一旦创建,在服

存储过程概念

存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可独立执行或由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程一旦创建,在服务器上即被编译,可以在需要时执行多次,有效的提高了执行效率。

 

存储过程的分类:系统存储过程和用户存储过程 。

系统存储过程存储在master数据库中,且以sp_为前缀。在其他数据库中可以直接调用,不必指明数据库名

 

存储过程的优点

可以在单个存储过程中执行一系列 SQL 语句。

可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

 

和函数的区别

执行的本质都一样。函数的限制比较多。具体如下;

1、返回值:函数只能返回值或者表对象而且是一个;而存储过程可以返回参数,返回单个或多个结果集以及返回值。

 

2、调用:函数是可以作为查询语句的一个部分来调用,所以可以嵌入在sql中使用,可以在select中调用;

             由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面;

              而存储过程作为一个独立的部分来执行。

 

3、数据来源;函数不能用临时表,只能用表变量;而存储过程的限制相对就比较少 。

 

实现功能:存储过程实现的功能要复杂一点;而函数的实现的功能针对性比较强。

 

主要讲用户存储过程的操作和调用

 管理存储过程的操作

1、创建存储过程:创建一个和创建一组。

步骤:1、判断存储过程是否存在,若存在,先删除存储过程。

          2、创建存储过程。

 

语法:(1)创建一个存储过程

                    if exists (sql语句)

                   Drop procedure  proname

                   Go

                   '开始创建

                   Create procedure proname  [参数列表(参数名,数据类型,默认值)[output]]

                   [with  recompile|encryption]

                   As

        (2)创建一组存储过程。用一个例子来说明吧!

数据库对象存储过程 轻松走进数据库系列八

使用“;”和 数字来创建了一组存储过程。

执行时,可以单独执行其中的一个,写明存储过程名,分号,和数字。例:execute group_sp;3

但是不可以单独删除某个存储过程,要删除只能一起删除。

 

         2、修改存储过程:只把定义中的create改成alter即可。

 

         3、删除存储过程:drop  procedure  proname

 

         4、查看存储过程:sp_helptext     查看存储过程的文本,

                              sp_depends           查看存储过程的饮用对象。

                              sp_help  显示所有相关信息。

         5、重命名存储过程:sp_rename  '',''

 

 

调用存储过程

         调用、参数传入、返回值。

               调用:使用语句execute。

 

              参数传入;按位传入:按照声明时的顺序传入;

                                按引用传入:按照参数的名字传入,书写参数时可一不安顺序来写。

              返回值:return 和output

两者没有区别:只是声明不同。return出现在定义完存储过程后。Return @变量名

而output是在创建存储过程定义变量时,写在要变量之后: @变量名  output

 

注意:1、参数变量前都需要加@。

             2、调用时,如果存储过程是批处理的第一条语句,可以不使用execute关键字,直接用存储过程铭来执行。

           3、传值时,@变量名=default或者不写,使用定义时的默认值。

          4、两种传值方式不可以混用。

 

触发器时特殊的存储过程,触发器是由事件触发的,而存储过程是单独执行或由程序调用的。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage