Greenplumは動的SQLをサポートしていますか?
-
29-09-2020 - |
質問
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;
. 所属していません dba.stackexchange