2

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

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

所以,如果我这样做,host echo %COMPUTERNAME%我会得到回应%COMPUTERNAME%

有任何想法吗?

4

1 回答 1

0

我想这是因为 Oracle 在%. 不过,不需要使用 HOST 命令来执行此操作。您可以使用命名空间的TERMINAL参数来代替:USERENVSYS_CONTEXT

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

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

ELZAR

该文档描述TERMINAL为:

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

如果您必须使用 HOST 命令,我可以通过用反引号括起来来解决问题

SQL> host `echo %computername`
ELZAR
于 2013-01-14T15:57:42.967 回答