web-dev-qa-db-ja.com

「NavicatforPostgreSQL」で、MS SQL Server ManagementStudioの場合と同じように単純なPL / pgSQLスクリプトを実行するにはどうすればよいですか?

関数などは必要ありません。いくつかの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を使用することはできませんが、構築は次のように実行できます

1
a_vlad