奇怪的Oracle SQLPlus主机回显错误

奇怪的Oracle SQLPlus主机回显错误,oracle,environment-variables,sqlplus,Oracle,Environment Variables,Sqlplus,我正在尝试运行一个脚本。我们的大多数机器上都安装了11.2.0.1。我被要求升级到11.2.0.3版本。我在Windows环境中升级了Windows 7设备。一切都很顺利。然后我得到了一个32位的WindowsServer2008(不是R2)虚拟机。所以,我下载了32位客户端 当我试图运行我们的脚本时,我遇到了一些奇怪的错误。我研究了一下,结果发现SQL*Plus不会传递环境变量 因此,如果我执行主机echo%COMPUTERNAME%操作,我会得到%COMPUTERNAME% 有什么想法吗?我

我正在尝试运行一个脚本。我们的大多数机器上都安装了11.2.0.1。我被要求升级到11.2.0.3版本。我在Windows环境中升级了Windows 7设备。一切都很顺利。然后我得到了一个32位的WindowsServer2008(不是R2)虚拟机。所以,我下载了32位客户端

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

因此,如果我执行
主机echo%COMPUTERNAME%
操作,我会得到
%COMPUTERNAME%


有什么想法吗?

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

本文档将
终端
描述为:

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

如果必须使用HOST命令,我可以通过使用反勾号来解决这个问题

SQL> host `echo %computername`
ELZAR

从命令行使用“echo%COMPUTERNAME%”时会发生什么情况?它可能是一个配置错误的VM。您正在使用VMware吗?如果我在命令行中键入echo%COMPUTERNAME%,它会给出计算机的名称。是的,我们使用的是VMWare,但它是集中控制的,所以我无法管理机箱。如果您只使用“主机”本身会发生什么?如果它确实打开了一个命令shell,“set”显示了哪些变量?“host echo%COMPUTERNAME%”在我的系统上运行良好,没有引号。它在我的@Chris或OPs上运行不正常。。。我的答案的中心部分是,在Oracle中有一种方法可以做到这一点,而不需要借助外部操作系统命令。我目前有一个项目,其中包含150多个SQL脚本。在本应工作的情况下,将每一个调用更改为具有不同的调用,实际上在另一台机器上也可以,这对环境不起作用。我只是需要一个方法来修复我的虚拟机有这个问题。你没有把任何问题@paul。。。就我个人而言,我会接受这个打击并改变它,因为您当前的方法在不需要时依赖于操作系统。
SQL> host `echo %computername`
ELZAR