PL/SQL程序都是以(BLOCK)为基本单位,整个PL/SQL块分为3部分:声明部分(以DECLARE开头)、执行部分(以BEGIN开头)和异常处理部分(以EXCEPTION开头)。其中,执行部分是必须的,其他两个部分可选。无论PL/SQL程序段的代码量有多大,其基本结构就是由这3部分组成,而且每条语句均由分号隔开。其结构语法如下:
声明部分,以DECLARE开头:
DECLARE
--DECLARE STATEMENT
执行部分,以BEGIN开头,以END结束:
BEGIN
--EXECUTE STATEMENT
异常处理部分,以EXCEPTION开头:
EXCEPTION
WHEN EXCEPTIONCASE THEN
--EXCEPTION HANDLE
END;
其用法如下:
create table TESTQUARTZ
(
CARNO VARCHAR2(30),
CARINFOID NUMBER
)
DECLARE
v_carinfoID NUMBER(10):=10;
v_carno VARCHAR2(30);
BEGIN
DELETE FROM Testquartz;
INSERT INTO Testquartz(CARINFOID,CARNO) VALUES(v_carinfoID,'00001');
SELECT carno
INTO v_CARNO
FROM Testquartz
WHERE CARINFOID=v_carinfoID;
DBMS_OUTPUT.put_line(v_carno);
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('无数据!');
END;
2.6 常量和变量
在PL/SQL中常量和变量必须是在声明后才可以使用,向前引用(Forward Reference)是不允许的。
2.6.1 常量
定义常量的语法格式如下:
常量名 CINSTANT 类型标示符 [NOT NULL]:=值;
常量,包括后面的变量名都必须以字母开头,不能有空格,长度不能超过30个字符,同时不能和保留字同名,常(变)量名称不区分大小写,在字母后面可以带数字或特殊字符。括号内的NOT NULL 为 可选参数,若选用,表明该常(变)量不能为空。
例如,下面的代码定义了名为PI的数字型常量,长度为9:
DECLARE
pi CONSTANT NUMBER(9):=3.1415926;
BEGIN
COMMIT;
END;
SQL>
26 /
PL/SQL procedure successfully completed
SQL>
2.6.2 变量
变量可以是任何SQL类型,如CHAR\DATE或NUMBER等,也可以是PL/SQL、BOOLEAN或BINARY_INTEGER等
基本数据类型变量的定义语法如下:
变量名 类型标示符 [NOT NULL]:=NULL;
例如,下面代码定义了名为age的数字型变量,长度为3,初始值为26:
DECLARE
age NUMBER(3):=26;
BEGIN
COMMIT;
END;
/
此外,前面还介绍了可以使用%TYPE和%ROWTYPE两种方法来定义变量的类型,使之和数据表中的字段或与记录的数据类型一致。这样,当数据表的字段或记录的数据类型修改后,PL/SQL程序中相应变量的类型也自动修改。
使用%TYPE可以使变量获得字段的数据类型,使用%ROWTYPE可以使变量获得整个记录的数据类型。两者定义区别在于,前者是“变量名 数据表.列名%TYPE”,而后者是“ 变量名 数据表%ROWTYPE”.
%ROWTYPE的用法示例如下
DECLARE
myTable emp%ROWTYPE;
BEGIN
SELECT * INTO myTable FROM emp WHERE ROWNUM=1;
dbms_output.put_line(myTable.ename);
END;
SQL>
12 /
7369
PL/SQL procedure successfully completed
SQL>