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

これは、オラクルが に問題を抱えているためだと思います%。ただし、これを行うために 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 に答える