Фишки SQLPlus Oracle

Jan 13, 2010 18:48

1)
Подключаемся SQLPlus 9i к БД 10g и наблюдаем:

SQL> help spool

SPOOL
-----

Stores query results in a file, or optionally sends the file to a printer.
In iSQL*Plus, use the Preferences screen to direct output to a file.

SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]

Not available in iSQL*Plus

SQL> spool 1.txt APP
SP2-0333: Неверное имя спулинг файла: "1.txt APP" (плохой символ: ' ')
SQL>

Т.е. справка по команде выводится из БД, а парсер SQLPlus команду не распознаёт :-)
Сделали бы уж и справку из SQLPlus только для его директив, остальное из БД. А то как-то через задницу всё...

2)

SQL> call dbms_output.put_line('
2 a
3 ');

a

SQL> call dbms_output.put_line('
2 @
2 ');

SQL> call dbms_output.put_line('
2 '||'@
3 ');

@

SQL> call dbms_output.put_line('
2 @a
SP2-0310: unable to open file "a.sql"
2 ');

SQL> call dbms_output.put_line('
2 a @a
3 ');

a @a

SQL>

И ему совершенно пофиг, что символ @ находится в кавычках. Если он первый в строке (или до него только пробелы и табуляции) - SQLPlus непременно пытается вызвать внешний файл.
Причём эту злое...злополучную "собачку" никак не отключить директивами SQLPlus, в отличии от других спец.символов, типа & и других. Приходится построчно применять regexp_replace(vLine,'^(( | )*)@','\1''||''@'), что, как минимум, портит эстетику выгружаемого кода...

Как всегда, из-за таких мелких огрехов получаем кучу геморроя.

it, oracle

Previous post Next post
Up