関数などは必要ありません。いくつかのPL/pgSQL機能を含む単純なスクリプトを実行/テストしたいだけです。次のようなもの:
_IF 1=1 THEN
SELECT concat('Hello', 'World');
END IF;
_
構文は正しいと思いますが、Microsoft SQL Serverの場合のように、通常の「クエリエディター」では機能しません。次のエラーが発生します。
_[Err] ERROR: syntax error at or near "IF"
LINE 1: IF 1=1 THEN
^
_
Windows10マシンでNavicatfor PostgreSQLバージョン11.1.13(64ビット)を実行しています。 select version()
は次のように述べています。
_PostgreSQL 9.4.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
_
編集:
この質問がX-Y問題の犠牲者である可能性があることに気づきました。私が本当にやりたいのは、重複を無視して値を挿入する次の方法をテストすることです。
_BEGIN
INSERT INTO db_table (tbl_column) VALUES (v_tbl_column);
EXCEPTION WHEN unique_violation THEN
-- Ignore duplicate inserts.
END;
_
私はここでそれを見つけました: 重複した挿入を無視する最適な方法?
次のエラーが発生します。
_[Err] ERROR: syntax error at or near "INSERT"
LINE 2: INSERT INTO db_table (tbl_column) VALUES ('test');
^
_
DO $$
BEGIN
INSERT INTO t1 (id) VALUES (6);
EXCEPTION WHEN unique_violation THEN
-- Ignore duplicate inserts.
END$$;
プロシージャコードの外部でIFを使用することはできませんが、構築は次のように実行できます