web-dev-qa-db-ja.com

pgAdminで変数を宣言するにはどうすればよいですか

私がpsqlターミナルにいる場合は、次のような変数を宣言して使用できます。

\set message_id soifsdaofisd.gmail.com;
select * from emails where message_id = ':message_id';

PgAdminでこれを行うにはどうすればよいですか?

PgAdminでこれを試すと、エラーが発生します。

エラー:「CALAdkA4YC0」またはその近くの構文エラー3行目:message_idsoifsdaofisd.gmail.comを設定します。

10
dagda1

\setはpsql(インタラクティブコマンドラインターミナル)の機能であり、pgAdminでは使用できません。

PostgreSQLは通常、プレーンSQLで変数を使用しません。 PL/pgSQLコード を匿名ブロック( DO ステートメント)または 関数 で使用します。

ただし、サーバーに対してcan(ab)use customized options -現在使用しているクライアントに関係なく、サイドの「変数」:

SET foo.test = 'SELECT bar FROM baz';
SELECT current_setting('foo.test');

この関連する回答の詳細:
PostgreSQLのユーザー定義変数

また、pgScriptもあります。これは、pgAdminクエリツールのローカルスクリプト拡張機能で、psqlで実行できるものと同等のローカル変数を使用できます。ドキュメントごと:

PgScriptスクリプトを実行するには、[実行]ではなく[クエリ]メニューから[pgScriptの実行]を選択するか、[pgScriptの実行]ツールバーボタンを押すか、F6ファンクションキーを押します。

pgScriptスクリプト言語リファレンス の詳細。

9

別の方法は、ビューを作成することです。

-- create view to store variable list
create view script_variables as select 'soifsdaofisd.gmail.com' as message_id;
-- run your script
select * from emails where message_id = (select message_id from script_variables);
-- clean up 
drop view script_variables; 
0
Tim Kessler