Я хочу сгенерировать кучу сценариев 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 версии 11.2.0.1.0 Production, подключаясь к экземпляру 11gR2.)