奇怪的Oracle SQLPlus主机回显错误

时间:2013-01-14 14:28:15

标签: oracle environment-variables sqlplus

我正在尝试运行脚本。我们的大多数机器都安装了11.2.0.1。有人要求我升级到11.2.0.3。我在Windows 7环境中本地升级了Windows环境。一切都很好。然后,我获得了一个虚拟的Windows Server 2008(而不是R2)32位。所以,我下载了32位客户端。

当我尝试运行我们的脚本时,我遇到了一些奇怪的错误。我调查了一下,结果发现SQL * Plus不会传递环境变量

所以,如果我host echo %COMPUTERNAME%,我会收到%COMPUTERNAME%

的回复

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我想这是因为Oracle遇到了%的问题。但是,不需要使用HOST命令来执行此操作。您可以使用TERMINAL命名空间的USERENV参数代替SYS_CONTEXT

SQL> select SYS_CONTEXT('USERENV', 'TERMINAL') from dual;

SYS_CONTEXT('USERENV','TERMINAL')
---------------------------------------------------------

ELZAR

该文档将TERMINAL描述为:

  

当前会话的客户端的操作系统标识符。   在分布式SQL语句中,此属性返回标识符   为您的本地会议。在分布式环境中,这是   仅支持远程SELECT语句,不支持远程INSERT,   更新或删除操作。 (此参数的返回长度可以   因操作系统而异。)

如果你必须使用HOST命令,我可以通过封闭反引号来解决问题

SQL> host `echo %computername`
ELZAR