【发布时间】:2014-06-11 14:11:12
【问题描述】:
我想通过查询数据字典来生成大量 SQL*Plus 脚本,但我遇到了一些问题并且怀疑我遗漏了一些明显的东西。
例如,当我在 SQL*Plus 中执行以下命令时,我得到 ORA-01756: quoted string not properly terminated:
SQL> SPOOL myscript.sql
SQL> SELECT q'[SPOOL log
2 SELECT COUNT(*) FROM DUAL;
ERROR:
ORA-01756: quoted string not properly terminated
我尝试使用续行符来避免此错误,但它会将续行符放入输出中:
SQL> SELECT q'[SPOOL log
2 SELECT COUNT(*) FROM DUAL; -
3 PROMPT Done.
4 ]' FROM DUAL;
SPOOL log
SELECT COUNT(*) FROM DUAL; -
PROMPT Done.
注意DUAL; 后面的- 是如何输出的?我不希望在生成的脚本中出现这种情况。
我可以解决这个问题的一种方法是连接大量 CHR() 函数调用以生成分号和换行符;但我希望我不必这样做,因为生成的这些脚本非常长,并且在代码中散布着像 ]'||CHR(59)||CHR(10)||q'[ 这样的位,这使得它看起来非常难看并且很难解决。
(我正在使用 SQL*Plus Release 11.2.0.1.0 Production,连接到 11gR2 实例。)
【问题讨论】: