我当前正在将AIX迁移到Linux。 Oracle脚本的列名中包含$。在获取shell脚本时,我将转义字符设置为$,但它不起作用。查询如下:
Set escape $
Select c.logoff$time from temp c;
从shell脚本运行时,我得到“ c.logoff无效标识符”。
我该如何解决?
答案 0 :(得分:6)
这不是SQL * Plus(我假设是您的客户)问题,所以set escape
并没有做任何事情-这是为了逃避SQL * Plus试图解释的事情-see the docs。
这是外壳问题/功能。 $time
部分被视为shell变量,并且该变量不存在,因此最终表名称中没有该变量。您可以在外壳层对此进行转义,请参考\$time
;例如如果您使用的是Heredoc:
sqlplus -s -l usr/pass@db <<EOF
select c.logoff\$time from temp c;
EOF