私がpsqlターミナルにいる場合は、次のような変数を宣言して使用できます。
\set message_id soifsdaofisd.gmail.com;
select * from emails where message_id = ':message_id';
PgAdminでこれを行うにはどうすればよいですか?
PgAdminでこれを試すと、エラーが発生します。
エラー:「CALAdkA4YC0」またはその近くの構文エラー3行目:message_idsoifsdaofisd.gmail.comを設定します。
\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ファンクションキーを押します。
別の方法は、ビューを作成することです。
-- 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;