一个完整的PL/SQL程序的总体结构如下所示:
delacre
定义语句段
begin
执行语句段
exception
异常处理语句段
end
一、常量
1.定义常量的语法格式
常量名constant类型标识符[not null]:=值;
常量名,包括后面的变量名都必须以字母开头,不能有空格,不能超过 30 个字符长度,同时不能和保留字同名,常(变)量名称不区分大小写,在字母后面可以带数字或特殊字符。括号内的not null为可选参数,若选用则表明该常(变)量不能为空值。
2.常量的示例
declare
p constant number(9):=3.141592;
begin
commit;
end;
二、基本数据类型变量
1.基本数据类型
类型标识符 说明
number 数组类型
int 整数型
pls_integer 整数型,产生溢出时出息错误
binary_integer 整数型,表示带符号的整数
char 定长字符型,最大255个字符
varchar2 变长字符型,最大2000个字符
long 变长字符型,最长2GB
date 日期型
boolean 布尔型
2.基本数据类型变量的定义方法
变量名 类型标识符 [not null]:=值;
declare
age number(3):=26;
begin
commit;
dbms_output.put_line(age);
end;
三、复合数据类型变量
1.使用%type 定义的变量
让PL/SQL中变量的类型和数据表中的字段的数据类型一致 。示例代码:
declare
mydate scott.emp.hiredate%type; //定义了名为mydate 的变量,其类型和scott.emp数据表中的 hiredate字段类型是一致
begin
commit;
end;
2.定义记录类型变量
declare
type myrecord is record( myrecordnumber int, mycurrentdate date);
定义了名为myrecord的记录类型,该记录类型由整数型的myrecordnumber和日期型的mycurrentdate基本类型变量组成, srecord
是该类型的变量。
srecord myrecord;
begin
select empno, hiredate into srecord from scott.emp where sal=1300;
dbms_output.put_line(srecord.mycurrentdate);
end;
3. 使用%rowtype定义变量
使用%type可以使变量获得字段的数据类型,而使用%rowtype可以使变量获得整个记录的数据类型。
注意两者定义的不同:
使用%type定义变量:变量名 数据表.列名%type。
使用%rowtype定义变量:变量名 数据表%rowtype。
引用%rowtype定义的变量时,使用:变量名.列名。
Declare
mytable scott.emp%rowtype;
begin
select * into mytable
from scott.emp
where sal=1300;
dbms_output.put_line(mytable.hiredate);
end;
四、表达式
变量、常量经常需要组成各种表达式来进行运算,下面介绍在PL/SQL中常见表达式的运算规则。
1.数值表达式
PL/SQL 程序中的数值表达式是由数值型常数、变量、函数和算术运算符组成的,可以使用的算术运算符包括+(加) 、-(减) 、*
(乘)、/(除)和**(乘方)等。
declare
result integer;
begin
result:=10+3*4-20+5**2;
dbms_output.put_line('运算结果是:'||to_char(result));
end;
2.字符表达式
字符表达式由字符型常数、变量、函数和字符运算符组成,唯一可以使用的字符运算符就是连接运算符“||”。
3.关系表达式
关系表达式由字符表达式或数值表达式与关系运算符组成,可以使用的关系运算符包括以下9种:
< 小于
> 大于
= 等于(不是赋值运算符:=)
like 类似于
in 在……之中
<= 小于等于
>= 大于等于
!= 不等于
between 在……之间
4.逻辑表达式
逻辑表达式由逻辑常数、变量、函数和逻辑运算符组成,常见的逻辑运算符包括以下3 种:
NOT:逻辑非
OR:逻辑或
AND:逻辑与
逻辑表达式运算的优先次序为:NOT、AND、OR。
5.函数
PL/SQL程序中提供了很多函数供扩展功能,其中最常用的数据类型转换函数有以下3个:
to_char:将其它类型数据转换为字符型。
to_date:将其它类型数据转换为日期型。
to_number:将其它类型数据转换为数值型。
PL/SQL 程序中的流程控制语句主要有条件控制、循环控制
一、条件控制
1.if...then...end if 条件控制,这种条件控制的语法结构为:
if 条件 then
语句段;
end if;
2. if...then...else...end if条件控制 ,采用if...then...else...end if 条件控制的语法结构如下所示:
if 条件 then
语句段1;
else
语句段2;
end if;
3. if嵌套条件控制
采用if嵌套条件控制的语法结构如下所示:
if 条件1 then
if 条件2 then
语句段1;
else
语句段2;
end if;
else
语句段3;
end if;
二、 循环控制
循环结构是按照一定逻辑条件执行的一组命令,PL/SQL中有4种基本循环结构 :
1.loop…exit...end loop循环控制:
采用loop...exit...end loop循环控制的语法结构如下所示:
loop
循环语句段;
if 条件语句 then
exit;
else
退出循环的处理语句段;
end if;
end loop;
2.loop...exit...when...end loop循环控制
采用loop...exit...when...end loop 循环控制的语法结构如下所示:
loop
循环体;
exit when循环条件;
end loop
3. while...loop...end loop循环控制
这种循环控制的语法如下:
while 条件
loop
执行语句段;
end loop;
4.for...in...loop...end循环控制
采用for...in...loop...end循环控制的语法如下:
for 循环变量 in [reverse] 循环下界..循环上界 loop
循环处理语句段;
end loop;