数据库之存储过程

        存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。而用户通过指定存储过程的名字和参数(如果存储过程带有参数)来执行它。PL/SQL(Procedural Language/ SQL)是编写数据库存储过程的一种过程语言,它结合SQL数据库操作能力和过程化语言的流程控制能力,是SQL的过程化扩展。

1、PL/SQL简介

1)PL/SQL的块结构

         基本的SQL是高度非过程化的语言,它最基本的结构是块。所有PL/SQL程序都是由块组成,块之间可以相互嵌套,每个块完成一个逻辑操作。

2)变量定义

变量名 数据类型 [ [NOT NULL] := 初值表达式] 或 变量名 数据类型 [ [NOT NULL] 初值表达式]

3)常量定义

变量名 数据类型 CONSTANT := 常量表达式

常量必须给一个值,并且该值在存在期间或常量作用域内不能改变。如果试图修改它,PL/SQL将返回一个异常。

4)赋值语句

变量名称 := 表达式

                       DECLARE                                                                                /*定义的变量、常量等只能在该基本块中使用*/              

定义部分        -----------变量、常量、游标、异常等                                    /*当基本块执行结束时,定义就不在存在*/

                       BEGIN

                        -----------SQL 语句、PL/SQL的流程控制语句

执行部分       EXCEPTION                                                                              /*遇到不能继续执行的情况称为异常*/

                        ------------异常处理部分                                                           /*在出现异常时,采取措施来纠正错误或报告错误*/

                       END;

5)控制结构

PL/SQL提供了流程控制语句,主要有条件控制语句和循环控制语句。其余高级语言类似,在此不再赘述。

条件控制语句:

                  IF-THEN-END IF、IF-THEN-ELSE-END IF

循环控制语句:

                 LOOP-END LOOP、WHILE LOOP-END LOOP、FOR-LOOP-END LOOP

2、存储过程

       PL/SQL块主要有两种类型:命名块和匿名块。其中匿名块每次执行时都要进行编译,它不能被存储到数据库中,也不能在其他的PL/SQL块中调用。存储过程是命名块,在编译后存储到数据库中,可以被反复调用,运行速度快。

1)优点

  • 由于存储过程是存储在数据库中,因而其运行效率高,提供了服务器端快速执行SQL语句的有效路径。
  • 客户机应用程序只需通过网络向服务器发送存储过程的名字和参数,就可以让RDBMS执行多条SQL语句,并进行数据处理操作,而只有最终处理结果才返回客户机,因此降低了客户机与服务器之间的通信量。
  • 可以把企业规则的运算程序写成存储过程放入数据库服务器中,由RDBMS管理。既有利于集中控制,又能够方便地进行维护。

2)创建存储过程

CREATE Procedure 过程名([参数1, 参数2, ...] )             /*存储过程首部*/

AS

<PL/SQL块>;                                                                                  /*存储过程体,描述存储过程的操作*/

存储过程包括首部和过程体,其中:

  • 过程名:数据库服务器合法的对象标识符
  • 参数列表:用名字来标识调用时给出的参数值,必须指定值得数据类型,存储过程的参数也可以定义输入参数、输出参数或输入/输出参数。默认为输入参数。
  • 过程体:是一个<PL/SQL块>.包含声明部分和可执行语句部分。

注意:可以使用ALTER Procedure 过程名1 RENAME TO 过程名2;

3)执行存储过程

CALL/PERFORM Procedure 过程名([参数1,参数2,...]);

4)删除存储过程

DROP PROCEDURE 过程名();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值