Это не проблема SQL * Plus (я полагаю, это ваш клиент), поэтому set escape
ничего не делает - это для избежания того, что SQL * Plus пытается интерпретировать - см. Документацию .
Это проблема оболочки / функция. часть $time
обрабатывается как переменная оболочки, и она не существует, поэтому в окончательном имени таблицы ее нет. Вы можете избежать этого на уровне оболочки, ссылаясь на \$time
; например если вы используете heredoc:
sqlplus -s -l usr/pass@db <<EOF
select c.logoff\$time from temp c;
EOF