加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

如安在Postgres sql函数中引用定名参数?

发布时间:2021-01-14 06:38:12 所属栏目:编程 来源:网络整理
导读:Postgres noobie在这里. 我正在实行将SQL Server存储进程转换为Postgres函数.今朝无法弄清晰怎样将此SQL行转换为Postgres. SQL Server: input: @name = nullSELECT *FROM tableWHERE name = ISNULL(@name,name) Postgres的: input: n = nullSELECT *FROM ta

Postgres noobie在这里.

我正在实行将SQL Server存储进程转换为Postgres函数.今朝无法弄清晰怎样将此SQL行转换为Postgres.

SQL Server:

input: @name = null

SELECT *
FROM table
WHERE name = ISNULL(@name,name)

Postgres的:

input: n = null

SELECT *
FROM table
WHERE name = COALESCE(n,name)

我收到错误“列n不存在”.如安在Postgres函数的select语句中引用参数?

更新:

Postgres函数的界说

CREATE OR REPLACE FUNCTION fn_name (n VARCHAR(32) = NULL,name OUT varchar(32),description OUT varchar(64))
RETURNS setof record
AS 
$$
    SELECT u.name,u.description
    FROM table_a u
    WHERE u.name = COALESCE(n,u.name);

$$
LANGUAGE sql;

办理要领

修订:正如评述中所指出的,这个谜底在2012年头编写时是精确的,但自2012年底宣布的v9.2以来,已经支持定名参数.

当函数在language SQL中时,参数名称仅仅是装饰.您可以在界说为说话plpgsql的存储进程中按名称行使参数.

因此,您必需行使$X引用函数args,个中X是函数参数列表的序数位置(从1开始).

CREATE OR REPLACE FUNCTION fn_name (
  n VARCHAR(32) = NULL,OUT name varchar(32),OUT description varchar(64) )
RETURNS setof record
AS 
$$
    SELECT u.name,u.description
    FROM table_a u
    WHERE u.name = COALESCE($1,u.name);
$$
LANGUAGE sql;

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读