【发布时间】:2021-04-28 13:35:24
【问题描述】:
我有下面的代码,可以正常工作。
SET SERVEROUTPUT ON;
DECLARE
cols CLOB;
BEGIN
SELECT
LISTAGG('"'
|| column_name
|| '"', ',') WITHIN GROUP(
ORDER BY
column_name
)
INTO cols
FROM
all_tab_columns
WHERE
lower(table_name) = 'd_dialler_brut'
AND column_name LIKE 'REASON%';
dbms_output.put_line(cols);
END;
但是,如果我尝试以下代码,则会引发以下错误
错误报告 - ORA-00905: 缺少关键字 ORA-06512: 在第 20 行 00905. 00000 - “缺少关键字”
SET SERVEROUTPUT ON;
DECLARE
cols CLOB;
vstr_cols CLOB;
BEGIN
vstr_cols := q'[
SELECT
LISTAGG('"'
|| column_name
|| '"', ',') WITHIN GROUP(
ORDER BY
column_name
)
INTO cols
FROM
all_tab_columns
WHERE
lower(table_name) = 'd_dialler_brut'
AND column_name LIKE 'REASON%']'
;
EXECUTE IMMEDIATE ( vstr_cols );
dbms_output.put_line(cols);
END;
第二个代码有什么问题?如何避免错误?
【问题讨论】: