转义引号结尾 Oracle SQL

Jav*_*rre 0 sql oracle quoting

在我的存储过程中,我通常会执行立即 q'[要执行的代码]。但是,我的代码中有一些带有“$[*]”的内容。Oracle 将引用和括号解释为我的引用的结尾。我怎样才能摆脱这个?请找到下面的完整代码。

    EXECUTE IMMEDIATE q'[
CREATE OR REPLACE VIEW vw_err_text AS
    WITH aux AS (
        SELECT
            err_txt
        FROM
            u339990_mr2
        WHERE
            err_txt IS NOT NULL
    )
    SELECT
        error_text,
        COUNT(*) AS ct,
        round(RATIO_TO_REPORT(COUNT(1)) OVER() * 100, 2) perc
    FROM
        aux CROSS APPLY
            JSON_TABLE(err_txt, '$[*]'
                COLUMNS
                    error_text PATH '$'
            )
    GROUP BY
        error_text
    ORDER BY
        ct DESC,
        error_text
        ]'
    ;
Run Code Online (Sandbox Code Playgroud)

小智 5

对引用语法使用不同的字符(或多个字符)q

q'[ ... ]'是正确的,但您也可以使用(或与花括号或和q'( ... )'相同)。此外,您可以使用任何单个字符(未配对),如or - 仅使用数据中不会自然出现结束组合的字符。这正是语法允许这种灵活性的原因。<>q'@ ... @'q'^ ... ^'

https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm#i42617