【IT168 技术文档】
PL/SQL简介:
概念:
优点:性能,可移植
块特性:
DECLARE
声明变量、常量的程序块
声明部分不能是oracle的保留字,help reserved words
BEGIN
执行语句部分的程序块,至少有一句执行语句。比如null;
EXCEPTION
异常处理部分的程序块,如果声明和执行部分出现错误,oracle停止这些块的处理,跳转到异常块,是一种回退机制
END;
/
/ 是sqlplus中的块终止符,用户输入/ 并回车后,oracle 将刚才输入的代码块传递给数据库的PL/SQL引擎。
set serveroutput on
declare
l_text varchar2(200);
begin
l_text :=”hello, world”;
dbms_output.put_line(l_text);
exception
when others then
dbms_output.put_line(“We encountered an exception!”);
raise;
end;
/
set serveroutput on
declare
l_number number :=1;
begin
l_number++;
dbms_output.put_line(‘1+1=’|| to_char(l_number)||’!’);
exception
when others then
dbms_output.put_line(‘We encountered an exception!’);
end;
/
块嵌套:
程序块可以在可执行部分和异常处理部分包含另外的程序块
set serveroutput on
declare -- begin block 1
l_text varchar2(100);
begin
l_text := ‘Block1’;
dbms_output.put_line(l_text);
declare --begin block 2
l_more_text varchar2(100);
begin
l_more_text := ‘Block2’;
dbms_output.put_line(l_more_text);
end; -- end block 2
end; -- end block 1
/
声明部分:
变量和常量都必须在声明( declare )部分定义,必须规定名称和数据类型。
Declare
L_number number;
Begin
L_number :=100;
End;
/
也可以在声明部分为变量赋值,即初始化变量。
Declare
L_number number := 100;
Begin
Null;
End;
/
常量:
1、 不能改变
2、 必须在声明的时候初始化常量
3、 必须在数据类型的左边规定constant
declare
l_number constant number := 10;
begin
null;
end;
/
如果没有初始化:
declare
l_number constant number;
begin
null;
end;
/
报错,不同于在异常块中定义的异常,这是一种编译期间的错误,异常块捕捉不到。
如果执行过程中改变常量:
declare
l_number constant number := 10;
begin
l_number := 20;
end;
/
报错。
为常量变量赋值:
:=
声明部分可以指定默认值:
variable datatype default expression;
declare
l_weeks_in_month number default 4;
begin
l_weeks_in_month := 5;
end;
/
使用not null 操作符:
declare
l_number number not null := 1;
l_number2 number;
begin
l_number:=10;
l_number:=l_number2;
end;
/