概述¶
匿名块可以被看作一个没有输入参数函数return为空函数体,它在某一时间内解析和执行。 匿名块没有存储在数据库中一旦被执行便从应用缓冲中删除。 匿名块经过简单转化便可以为函数或者存储过程。匿名块必须有begin…end语句, 必须有一条可执行语句,其他部分可有可无。块结构可以嵌套,其语法如下:
语法:
anonymous_block ::=
参数:
declare_clause 匿名块中的变量声明语句,在匿名块内声明变量,如果无需声明变量,则可以省略DECLARE。
exe_clause 具体的执行语句,编写SQL语句、控制逻辑等可执行的部分。此部分是必需的。
excption_clause 异常处理语句,为了应对程序内可能发生的异常,在此进行错误处理。如果无需错误处理,则可以省略EXCEPTION。
说明:
匿名块每次使用均需要进行编译,不能存储在数据库中且不能被其他PLOSCAR调用。
一旦匿名块被执行就会从应用缓存区里移除,不会重新执行。
经过简单的修改匿名块可以很容易的转变为存储过程和存储函数。
匿名块可以看做执行各种语句(包括调用其他函数和程序块)集合的脚本。
匿名程序块可以嵌套在其他的存储过程和函数中。
示例:
declare
var_1 int := 1;
begin
loop
var_1 := var_1 + 1;
raise notice 'out %',var_1;
if var_1 > 3 then exit;
end if;
end loop loop1;
EXCEPTION when others then
raise notice 'out %',var_1;
end;
--执行结果为:
out 2
out 3
out 4