输出参数上的 PostgreSQL SELECT

PostgreSQL SELECT on Output parameter

我正在将 MSSQL 数据库转换为 PostgreSQL,我对 PostgreSQL 的体验处于 "noob" 水平。我在 MSSQL 中有一个存储过程,我基本上将值分配给一组 OUT 参数。当我尝试执行以下脚本来创建函数时,出现错误 'ERROR: column "closehi" does not exist' 我无法弄清楚为什么我不能 SELECT 进入这些 OUT 参数。这是脚本:

CREATE FUNCTION public.getpogstats(IN symbol character varying, IN pogtypeid integer, OUT closehi numeric, OUT closelo numeric, OUT dayhi numeric, OUT daylo numeric, OUT s7dhi numeric, OUT s7dlo numeric, OUT t13hi numeric, OUT t13lo numeric, OUT close numeric, OUT firstdate timestamp without time zone)
    RETURNS record
    LANGUAGE 'sql'

AS $function$
SELECT closehi = ROUND(MAX(closeprice), 2), closelo = ROUND(MIN(closeprice), 2), dayhi = ROUND(MAX(dayhigh), 2), daylo = ROUND(MIN(daylow), 2), 
    s7dhi = ROUND(MAX(sevendaydp), 2), s7dlo = ROUND(MIN(sevendaydp), 2), t13hi = ROUND(MAX(thirteendaydp), 2), t13lo = ROUND(MIN(thirteendaydp), 2), firstdate = MIN(datadate)
FROM pogdata
JOIN symbol ON pogdata.symbolid = symbol.symbolid AND pogdata.pogtypeid = pogtypeid
WHERE symbol.symbol = symbol;

SELECT close = ROUND(ClosePrice, 2) FROM pogdata
JOIN symbol ON pogdata.symbolid = symbol.symbolid
WHERE datadate = (SELECT MAX(datadate) 
                  FROM pogdata JOIN Symbol ON pogdata.symbolid = symbol.symbolid AND pogdata.pogtypeid = pogtypeid 
                  WHERE symbol.symbol = symbol)
AND symbol.symbol = symbol

$function$;

ALTER FUNCTION public.getpogstats(character varying, integer)
    OWNER TO postgres;

根据建议,我将函数的一部分更改如下:

SELECT ROUND(MAX(closeprice), 2), ROUND(MIN(closeprice), 2), ROUND(MAX(dayhigh), 2), ROUND(MIN(daylow), 2), 
    ROUND(MAX(sevendaydp), 2), ROUND(MIN(sevendaydp), 2), ROUND(MAX(thirteendaydp), 2), ROUND(MIN(thirteendaydp), 2),  MIN(datadate)
INTO closehi, closelo, dayhi, daylo, s7dhi, s7dlo, t13hi, t13lo, firstdate
FROM pogdata
JOIN symbol ON pogdata.symbolid = symbol.symbolid AND pogdata.pogtypeid = pogtypeid
WHERE symbol.symbol = symbol;

但现在我得到一个错误说 'Error: syntax error at or near ","' 并且它直接指向 INTO 目标变量列表中 closehi 变量之后的逗号。

语法不

SELECT variable1 = expression1, variable2 = expression2 ...

但是

SELECT expression1, expression2 INTO variable1, variable2 ...

参见the documentation