VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

匿名块中支持占位符作为赋值表达式左值

功能描述

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