📜  检查 psql 有效性函数 - SQL 代码示例

📅  最后修改于: 2022-03-11 15:04:53.391000             🧑  作者: Mango

代码示例1
CREATE OR REPLACE FUNCTION is_sql(sql text) returns boolean
    language plpgsql
AS
$$
DECLARE
    exception_message text;
    exception_context text;
BEGIN
    BEGIN
        EXECUTE E'DO $IS_SQL$ BEGIN\nRETURN;\n' || trim(trailing E'; \r\n' from sql) || E';\nEND; $IS_SQL$;';
    EXCEPTION WHEN syntax_error THEN
        GET STACKED DIAGNOSTICS
            exception_message = MESSAGE_TEXT,
            exception_context = PG_EXCEPTION_CONTEXT;
        RAISE NOTICE '%', exception_context;
        RAISE NOTICE '%', exception_message;
        RETURN FALSE;
    END;
    RETURN TRUE;
END
$$;

-- TEST
SELECT is_sql('SELECTx'), is_sql('SELECT x');