如何在Postgres sql函数中引用命名参数?
发布时间:2021-01-15 03:14:31 所属栏目:MsSql教程 来源:网络整理
导读: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; (编辑:天瑞地安资讯网_黄海网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 使用HAProxy为镜像SQL Server提供容错功能
- Sql Server 视图数据的增删改查方法
- sql-server – 将列“粘合”在一起的最佳方法
- sql – 通过重复属性进行分组
- SQL Server:只有GROUP BY中的最后一个条目
- 在Sql Server中,如何将二进制字符串转换为二进制?
- sql-server-2008 – 如何在SQL Server 2008上找到内存压力故
- sql 中rand函数怎样用?sql怎样获取区间随机数?
- sql-server-2008 – 为什么我不能使用NEWSEQUENTIALID()作为
- sql-server-2008 – SSIS包中的数据转换问题 – 文本到GUID
站长推荐
热点阅读


