10

PostgreSQL に実装したい次の MySQL スクリプトがあります。

 SET @statement = search_address_query;
      PREPARE dynquery FROM @statement;
      EXECUTE dynquery;
      DEALLOCATE PREPARE dynquery;

PostgreSQL を使用してユーザー定義変数 "@statement" を定義するにはどうすればよいですか。

4

1 に答える 1

20

Postgresは通常、プレーンSQLで変数を使用しません。しかし、あなたもそれを行うことができます:

SET foo.test = 'SELECT bar FROM baz';

SELECT current_setting('foo.test');

マニュアルのカスタマイズされたオプションについてお読みください。

PostgreSQL 9.1以前では、それを使用する前に宣言する必要がありましcustom_variable_classesた。

ただし、PL(手続き型言語)なしで動的SQLを実行することはできません。 コマンドを使用してアドホックステートメントを実行します(ただし、コマンドからデータを返すことはできません)。または、動的SQLを実行する(そして考えられるあらゆる方法でデータを返すことができる)関数を作成するために使用します。EXECUTEDOCREATE FUNCTION

動的SQLを使用する場合は、SQLインジェクションから保護するようにしてください。

関連している:

于 2013-01-10T15:57:01.427 に答える