簡體   English   中英

輸出參數上的PostgreSQL SELECT

[英]PostgreSQL SELECT on Output parameter

我正在將MSSQL數據庫轉換為PostgreSQL,而我在PostgreSQL方面的經驗是“ noob”級別。 我在MSSQL中有一個存儲過程,在那里我基本上將值分配給一組OUT參數。 當我嘗試執行以下腳本創建函數時,出現錯誤“錯誤:列“ closehi”不存在”,我無法弄清楚為什么我不能選擇進入這些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;

但是現在我收到一個錯誤消息,提示“錯誤:“,”或附近的語法錯誤“,並且它直接指向INTO目標變量列表中closehi變量之后的逗號。

語法不是

SELECT variable1 = expression1, variable2 = expression2 ...

SELECT expression1, expression2 INTO variable1, variable2 ...

請參閱文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM