背景
在 Oracle 中,用户自定义的无参函数可以不带括号执行。为支持该特性,LightDB 24.1 版本中,允许用户使用无参函数的函数名调用函数,包括系统函数,如:now.
用例
create function fn_noparam() RETURNS int
language sql
as $$
select 1;
$$;
--= 1, simple expr
select fn_noparam;
--= 2
select fn_noparam + 1;
--= true
select fn_noparam = 1;
--= 1, composed expr
select least(fn_noparam, 2);
校验列名和函数名的优先级
create table t2(fn_noparam int, a int);
insert into t2 values(0, 1);
insert into t2 values(1, 1);
--= 1
select count(*) from t2 where fn_noparam = a;
--= 1
select count(*) from t2 where 1 + fn_noparam = a;
存储过程名是不允许在 select 语句中出现的,
create procedure pc_noparam()
language plpgsql
as $$
begin
raise notice 'ok';
end;
$$;
--= error
select pc_noparam;
--= `call` procedure without parentheses it supported by previous version
call pc_noparam;
标签:无参,lightdb,--,t2,括号,noparam,fn,select,函数
From: https://www.cnblogs.com/lddcool/p/17979690