2016-10-28 14 views
1

私はdebMonth1、debMonth2などのような多くの列を持つテーブルをクエリして、データを処理する必要があるアプリケーションのニーズに合った結果を得ようとしています。動的列名を使用したPostgresの選択

構文的にはクエリは今はOKと思われますが、結果は得られません。それはエラーなしで進行します。

カラム名に問題があると思いますか?誰か助けてくれますか?

DO $do$ 
DECLARE cmonth TEXT; 
DECLARE dmonth TEXT; 

BEGIN 
FOR i IN 1..15 LOOP 

cmonth = CONCAT('"credMonth' , i::text, '"'); 
dmonth = CONCAT('"debMonth' , i::text, '"'); 

EXECUTE 
format('SELECT 
    "account", "FY", "setOfBooks", $1, $2, $3 AS "fiscalMonth" 
FROM 
    "transaction_figures" 
WHERE 
    "dataType" = ''(80)'' AND 
    ($1 != ''0.00'' OR $2 != ''0.00'')') 
USING cmonth, dmonth, i; 

END LOOP; 
END 
$do$ LANGUAGE plpgsql; 

答えて

0

plpgsqlで実行された問合せでは、出力が印刷されず、クライアントに送信されません。

DO $do$ 
DECLARE cmonth TEXT; 
DECLARE dmonth TEXT; 
DECLARE r RECORD; 

BEGIN 
FOR i IN 1..15 LOOP 

cmonth = CONCAT('"credMonth' , i::text, '"'); 
dmonth = CONCAT('"debMonth' , i::text, '"'); 

FOR r in 
    EXECUTE 
    format('SELECT 
     "account", "FY", "setOfBooks", $1, $2, $3 AS "fiscalMonth" 
    FROM 
     "transaction_figures" 
    WHERE 
     "dataType" = ''(80)'' AND 
     ($1 != ''0.00'' OR $2 != ''0.00'')') 
    USING cmonth, dmonth, i 
LOOP 
    RAISE NOTICE '%', r; 
END LOOP; 

END LOOP; 
END 
$do$ LANGUAGE plpgsql; 

これは結果をpsqlで出力します。結果は次のようになります。データが表のように動作するようにするには(つまり、クライアントに送信されます)、plpgsql関数でコードをラップして問合せ結果を戻す必要があります。

関連する問題