PL/pgSQL内で同じPL/pgSQLを呼び出して処理を行おうとしています。
しかし、同じPL/pgSQLなので同じカーソルを開こうとしますが、
「カーソル"wk_cursor"はすでに使われています。」
とエラーが出てしまいます。
まぁ、ごもっともなのですが・・・。
同じPL/pgSQLを呼び出す方法はないのでしょうか。
お願いします。
pl/pgsql
1CREATE OR REPLACE FUNCTION testFunc ( argText text) RETURNS varchar AS $body$ 2DECLARE 3 WK_CURSOR CURSOR(arg text) FOR 4 SELECT "item1", "item2", "item3" FROM "testTable" WHERE "item1" = arg; 5 WK_CURSOR_REC RECORD; 6 vRETVALU varchar(4000); 7BEGIN 8 FOR WK_CURSOR_REC IN WK_CURSOR(argText) LOOP 9 IF (WK_CURSOR_REC."item2" IS NOT NULL) THEN 10 SELECT testFunc(WK_CURSOR_REC."item2") INTO vRETVALU ; 11 ELSE 12 vRETVALU := WK_CURSOR_REC."item1" || ',' || WK_CURSOR_REC."item3"; 13 END IF; 14 END LOOP; 15 RETURN vRETVALU; 16END; 17$body$ 18LANGUAGE PLPGSQL 19SECURITY DEFINER 20;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。