7

plpgsql 関数で動的選択クエリを使用して配列を作成しようとしています。残念ながら、構文エラーが発生します。

ERROR:  syntax error at or near "EXECUTE"
ZEILE 19:  SELECT DISTINCT INTO outputIdsToDelete ARRAY( EXECUTE findA...
                                                         ^

誰か助けてくれませんか?関数自体は次のとおりです。

関数の作成または置換 deleteMAPPINGs(
   mapTable1_key テキスト、mapping_table テキスト、mapTable2_key テキスト、
   table2 テキスト、table2_key テキスト、
   inputIdsToDelete bigint[]) RETURNS bigint[] AS
$本文$
宣言する
    outputIdsToDelete bigint[];
    findAllQuery テキスト;
    findUnreferencedQuery テキスト;
    始める
    findAllQuery := 'SELECT DISTINCT' || mapTable2_key ||
        ' から ' || マッピングテーブル ||
        ' どこ ' || mapTable1_key || ' = ANY(inputIdsToDelete)';
    findUnreferencedQuery := 'SELECT DISTINCT' || table2_key || -- 未使用を見つける
        ' から ' || テーブル2 ||
        ' どこ ' || table2_key || ' ではありません (' ||
            'SELECT DISTINCT' || mapTable2_key || -- すべて使用済み
            ' から ' || マッピングテーブル || ')';

    SELECT DISTINCT INTO outputIdsToDelete ARRAY( EXECUTE findAllQuery );

    マッピングテーブルのどこからでも削除
        mapTable1_key = ANY(inputIdsToDelete) AND
        mapTable2_key = ANY(outputIdsToDelete);

    SELECT DISTINCT INTO outputIdsToDelete --未使用で上書き
        ARRAY(EXECUTE findUnreferencedQuery);

    RETURN outputIdsToDelete;
終わり;
$本文$
LANGUAGE plpgsql 揮発性
コスト 100;
4

1 に答える 1

10

SQL文内でEXECUTEを使用することはできません-EXECUTEはplpgsql文のみであるため、SQL内では使用できません-

EXECUTE string INTO variable
于 2012-05-13T14:23:04.243 に答える