相关疑难解决方法(0)

SQL函数return-type:TABLE vs SETOF记录

返回TABLEvs 的函数和SETOF records其他所有函数之间的区别是什么.

CREATE FUNCTION events_by_type_1(text) RETURNS TABLE(id bigint, name text) AS $$
    SELECT id, name FROM events WHERE type = $1;
$$ LANGUAGE SQL STABLE;

CREATE FUNCTION events_by_type_2(text) RETURNS SETOF record AS $$
    SELECT id, name FROM events WHERE type = $1;
$$ LANGUAGE SQL STABLE;
Run Code Online (Sandbox Code Playgroud)

这些函数似乎返回相同的结果.看到这个SQLFiddle.

sql postgresql sql-types return-type sql-function

23
推荐指数
2
解决办法
7609
查看次数

如何在Postgres sql函数中引用命名参数?

Postgres noobie在这里.

我正在尝试将SQL Server存储过程转换为Postgres函数.目前无法弄清楚如何将此SQL行转换为Postgres.

SQL Server:

input: @name = null

SELECT *
FROM table
WHERE name = ISNULL(@name, name)
Run Code Online (Sandbox Code Playgroud)

Postgres的:

input: n = null

SELECT *
FROM table
WHERE name = COALESCE(n, name)
Run Code Online (Sandbox Code Playgroud)

我收到错误"列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;
Run Code Online (Sandbox Code Playgroud)

sql postgresql stored-procedures

12
推荐指数
2
解决办法
3万
查看次数