《Oracle PL/SQL 完全自学手册》读书笔记 2.5 PL/SQL基本结构

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> 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值