sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLカスタム例外?

    いいえ、このようではありません。ただし、独自の例外を発生させて維持することはできます。問題ありません:

    CREATE TABLE exceptions(
        id serial primary key,
        MESSAGE text, 
        DETAIL text, 
        HINT text, 
        ERRCODE text
    );
    
    INSERT INTO exceptions (message, detail, hint, errcode) VALUES ('wrong', 'really wrong!', 'fix this problem', 'P0000');
    
    CREATE OR REPLACE FUNCTION foo() RETURNS int LANGUAGE plpgsql AS
    $$
    DECLARE
        row record;
    BEGIN
        PERFORM * FROM fox; -- does not exist, undefined_table, fail
    
        EXCEPTION
            WHEN undefined_table THEN
                SELECT * INTO row FROM exceptions WHERE id = 1; -- get your exception
                RAISE EXCEPTION USING MESSAGE = row.message, DETAIL = row.detail, HINT = row.hint, ERRCODE = row.errcode;
    
        RETURN 1;
    END;
    $$
    
    SELECT foo();
    

    オフコースでは、手順にハードコードすることもできます。それはあなた次第です。




    1. NetSuiteは、他の2つの列の結果を乗算するために検索式を保存しました

    2. SpringHibernateを使用してシーケンスから次の値を取得する

    3. OracleのPostgresのDISTINCTONに相当しますか?

    4. /docker-entrypoint-initdb.d/db_init.shでpsqlコマンドを実行するとエラーが発生します(psql:サーバーに接続できませんでした:接続が拒否されました)