概述

匿名块可以被看作一个没有输入参数函数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