PLSQL入门与精通(第17章:存储过程的基本语法结构)

上次解说了存储过程的基本概念:
在无名PL/SQL块上命名并存储在数据库中就是存储过程。

从这次开始,我将对存储过程的语法进行解说。

首先整体结构。

<<存储过程创建的基本语法>>

1 CERATE OR REPLACE PROCEDURE 过程名称(临时参数名称模式数据类型,…)
2 IS
3 宣言部
4 BEGIN
5 执行部
6 EXCEPTION
7 例外处理部
8 END;

解释:
●过程创建的关键字
第1行,要创建存储过程,请使用CREATE PROCEDURE语句。
此时,如果是已经存在的程序,不加OR REPLACE就出错。存在就更新,不存在就增加。不会出错。

●关于临时参数
同样是第1行,虽然是临时参数,但通常过程中会有参数。
参数是从调用方获取值,或者反过来将值返回调用方的值。
参数用于与此类调用方之间的值进行交换。
这里定义的参数称为临时参数(虚参),实际调用时使用的参数称为实际参数(实参)。

●临时参数的模式
同样是第1行的临时参数,临时参数需要指定模式和数据类型。
模式有“IN”、“OUT”、“IN OUT”三种。
从调用源获取值的临时参数模式是“IN”。
相反,将值返回到调用源时,模式为“OUT”。
两种参数的模式都可以是“IN OUT”。
模式可以省略,但省略后被视为“IN”。

●临时参数的数据类型【重要】
接下来是临时参数的数据类型,不能省略。必须指定。
临时参数的数据类型不能指定长度。
例如,将“NUMBER(5)”这样的数据类型指定为临时参数时会发生编译错误。
不指定长度,只指定“NUMBER”,这就OK。

  同样,“VARCHAR2(10)”是错误的,“VARCHAR2”是OK的。

  另外,在临时参数的数据类型中指定“%TYPE”或“%ROWTYPE”时,也可以指定原始数据类型的大小。
  ※%TYPE主要以“表名.列名%TYPE”的形式使用,表示与该表中该列的数据类型相同的意思。
%ROWTYPE是指以“表格名%ROWTYPE”、“游标名%ROWTYPE”的形式使用,与表格和游标的一行构造相同的记录类型。

●宣言(或者叫定义)部【IS与BEGIN之间】
程序也是PL/SQL块,所以有宣言部分。
从AS或IS(第2行)开始,BEGIN(第4行)之间是宣言部,在此过程中可以声明要使用的变量等。
这里声明的变量的数据类型与临时参数不同,可以指定大小。
即使什么都不宣言,关键字IS(或AS)也是必要的。

●执行部【BEGIN与EXCEPITON之间】
和无名块一样,BEGIN以下是执行部。

●例外处理部
和无名块一样,EXCEPTION以下是例外处理部。例外处理部可以省略。

●方块结束
块结束处的END;(第8行)也可以是“END过程名称;”。
像这样写明过程名的话,就容易明白那个过程的结束了。

这就是存储过程基本语法结构。

猜你喜欢

转载自blog.csdn.net/niusr_1980_01/article/details/114164989