匿名块中支持占位符作为赋值表达式左值
功能描述
Vastbase G100在Oracle兼容模式下支持PL/SQL在匿名块中使用占位符作为赋值表达式左值。
语法格式
:占位符 := value;
参数说明
value
占位符的值或表达式。
注意事项
该功能仅在数据库兼容模式为Oracle时支持(即数据库实例初始化时指定DBCOMPATIBILITY='A')。
SQL语句的占位符使用英文冒号“:”开头。
示例
前置条件: 设置serveroutput 为on(允许将dbms_output.put_line的输出信息输出至vsql的命令界面的屏幕上)。
set serveroutput =on;
示例1:占位符作为赋值表达式左值,表达式为系统自带函数。
1、创建函数。
create or replace FUNCTION f1(var in number) return number is
l_var varchar(10) :='2022-12-28' ;
l_res number ;
BEGIN
execute immediate 'begin :result := year(:2); end;' using out l_res,l_var;
dbms_output.put_line(l_res);
return var;
end;
/
函数创建成功后,调用函数。
call f1(1);
调用函数成功,返回结果为:
f1
----
1
(1 row)
示例2:用占位符作为赋值表达式左值,赋值为null。
1、创建函数。
create or replace FUNCTION f1(var in number) return number is
BEGIN
return null;
end;
/
2、创建匿名块。在匿名块中使用占位符作为赋值表达式左值,赋值为null并输出结果。
declare
l_var number :=1;
l_res text;
l_funname varchar2(20) := 'f1';
begin
execute immediate 'begin :result := ' || l_funname || '(:2); end;' using out l_res, l_var;
dbms_output.put_line(l_res);
end;
/
匿名块创建成功,返回结果为空:
ANONYMOUS BLOCK EXECUTE