質問

PostgreSQLは、パラメータを動的SQLに渡すためのexecute ... usingオプションを実装し、この機能をバージョン8.4で導入することができる限り。私たちはPostgreSQLからフォークされているgreenplumを使用しているので、この機能はありません。

緑プラムまたはPostgreSQL 8.2の同じことをする方法は他にありますか?

役に立ちましたか?

解決

確かにわかりませんが、 CREATE FUNCTIONにはヒントがあります。 ドキュメンテーション:

langname. 関数が実装されている言語の名前。SQL、C、Internal、またはユーザー定義の手続き言語の名前である可能性があります。 greenplumデータベースでサポートされている手続き言語の作成言語を参照してください。

順番に、参照されている場所は

PL / PGSQL言語は、緑Plumデータベースではデフォルトでインストールされています。

EXECUTE ... USINGはPL / PGSQL機能です。したがって、唯一の質問はそれがそこからどのPostgreSQLバージョンであるかです。ドキュメンテーションは8.2を指しています - そしてこのようにそれはあなたが運不足のように見えます。

私は最終的な答えを得るために緑プラムサポートに連絡しましたが、答えを得なかった。

その構築の欠如を回避するために、あなたはそれを望むSQL文字列を明らかに連結して実行することができます。渡された値を正しく引用し、SQLインジェクションを避けてください。

他のヒント

DEZSO:

に記載されているストアド機能を使用して回避策を使用できます。
CREATE OR REPLACE FUNCTION dynamic_query (table_name TEXT) RETURNS VOID AS $$
BEGIN
    EXECUTE 'SELECT * FROM ' || table_name || ' WHERE column1 LIKE ''a_value''';
END;
$$ language plpgsql;
.

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top