VastbaseG100

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

Menu

函数调用时无入参

功能描述

支持在存储过程,函数和触发器中调用无传入参数的函数时省略括号。

注意事项

如果查询的表字段出现同名函数的时候,where条件不允许输入函数。例如:

 create table t2(id int,fun1 varchar2(20));
 select t2 where id=fun1;

返回结果为:

ERROR:  column "t2" does not exist
LINE 1: select t2 where id=fun1;
               ^
CONTEXT:  referenced column: t2

语法格式

调用无传入参数的自定义函数,调用语法如下:

  • 方式一:

    select function_name from dual;
    
  • 方式二:

    select * from tab where col=function_name;
    

示例

1、创建测试表并插入数据。

create table t(id int, name varchar2(200)); 
insert into t values (1,'al'); 
insert into t values (2,'a2');

2、创建存储存储过程。

create or replace function fun1 return number 
as
v_col varchar(100);
begin
select 1 into v_col from dual;
return v_col;
end;
/

3、调用方式一。

select fun1 from dual;

返回结果为:

 fun1
------
    1
(1 row)

4、调用方式二

select * from t where id = fun1;

返回结果为:

 id | name
----+------
  1 | al
(1 row)

5、调用方式三

select fun1,id from t where id=2; 

返回结果为:

 fun1 | id
------+----
    1 |  2
(1 row)