Столбец таблицы Oracle содержит $ - PullRequest
0 голосов
/ 31 мая 2019

Я сейчас перевожу AIX на Linux. Сценарий Oracle содержит $ в имени столбца. При извлечении из сценария оболочки я установил escape-символ на $, но он не работает. Запрос как ниже:

Set escape $

Select c.logoff$time from temp c;

При запуске из скрипта оболочки я получаю "неверный идентификатор c.logoff".

Как я могу это исправить?

1 Ответ

6 голосов
/ 31 мая 2019

Это не проблема SQL * Plus (я полагаю, это ваш клиент), поэтому set escape ничего не делает - это для избежания того, что SQL * Plus пытается интерпретировать - см. Документацию .

Это проблема оболочки / функция. часть $time обрабатывается как переменная оболочки, и она не существует, поэтому в окончательном имени таблицы ее нет. Вы можете избежать этого на уровне оболочки, ссылаясь на \$time; например если вы используете heredoc:

sqlplus -s -l usr/pass@db <<EOF

select c.logoff\$time from temp c;

EOF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...