0
私はMSSQLデータベースをPostgreSQLに変換しています。PostgreSQLの私の経験は "noob"レベルです。私は基本的にOUT引数のグループに値を代入するストアドプロシージャをMSSQLに持っています。関数を作成するために以下のスクリプトを実行しようとすると、エラー 'ERROR:column "closehiが存在しません。なぜこれらのOUTパラメータにSELECTできないのか分かりません。 『』で、または近くに構文エラー:出力パラメータPostgreSQL SELECT
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変数の直後にカンマを指しています。
'closehi = ROUND(MAX(closeprice)、2)'をROUND(MAX(closeprice)、2)をclosehiに変更するなどです。 2番目のクエリでセミコロンを閉じることができません –
ありがとうございます。これは私のMSSQLストアドプロシージャから直接コピーされていましたが、それまでのところ、直接動作しなかった唯一のものでした。 – KFayal