转义引用 Oracle SQL 的结尾
Escaping end of quotation Oracle SQL
在我的存储过程中,我通常喜欢立即执行 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
]'
;
对 q
引用语法使用不同的字符。
q'[ ... ]'
是正确的,但您也可以使用 q'( ... )'
(或与花括号或 <
和 >
相同)。此外,您可以使用任何单个字符(未配对),如 q'@ ... @'
或 q'^ ... ^'
- 只需使用数据中不会自然出现结束组合的字符。这正是语法允许这种灵活性的原因。
https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm#i42617
您可以在 q-quote 语法中使用任何字符,不必是方括号。检查此代码:
set serveroutput on size 999999
clear screen
declare
begin
dbms_output.put_line(q'[some text with 'quotes']');
dbms_output.put_line(q'!some text with square [] brackets!');
dbms_output.put_line(q'€some text with square [] brackets and exclamation marks ! €');
dbms_output.put_line(q'~some text with square [] brackets, exclamation marks ! and a €~');
dbms_output.put_line(q'zsome text with square [] brackets, exclamation marks ! and a ~ z');
end;
/
在我的存储过程中,我通常喜欢立即执行 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
]'
;
对 q
引用语法使用不同的字符。
q'[ ... ]'
是正确的,但您也可以使用 q'( ... )'
(或与花括号或 <
和 >
相同)。此外,您可以使用任何单个字符(未配对),如 q'@ ... @'
或 q'^ ... ^'
- 只需使用数据中不会自然出现结束组合的字符。这正是语法允许这种灵活性的原因。
https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm#i42617
您可以在 q-quote 语法中使用任何字符,不必是方括号。检查此代码:
set serveroutput on size 999999
clear screen
declare
begin
dbms_output.put_line(q'[some text with 'quotes']');
dbms_output.put_line(q'!some text with square [] brackets!');
dbms_output.put_line(q'€some text with square [] brackets and exclamation marks ! €');
dbms_output.put_line(q'~some text with square [] brackets, exclamation marks ! and a €~');
dbms_output.put_line(q'zsome text with square [] brackets, exclamation marks ! and a ~ z');
end;
/