Я хочу создать множество сценариев 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.)