0

次のバッチ スクリプトがあります。

sqlplus ms/ms@orcl < drop.sql
sqlplus ms/ms@orcl < create.1.0.sql

Windows エクスプローラーでバット ファイルをダブルクリックして実行すると、これは正常に機能します。

しかし、DOS プロンプトからコマンド名を入力すると、エラーが発生します。

C:\>create.bat

C:\>sqlplus ms/ms@orcl  0<drop.sql
The handle is invalid.

C:\>sqlplus ms/ms@orcl  0<create.1.0.sql
The handle is invalid

何か案は?


更新: の@代わりに使用するように変更しました<。これでエラーは回避されますが、スクリプトは最初のファイルのみを実行し、SQL>プロンプトが表示されたままになります。実行する 2 番目のファイルを取得するにはexit、プロンプトで入力する必要があります。その後、2 番目のファイルが実行されます。両方のファイルを実行する方法がわかりません。??

4

2 に答える 2

4

SQL*PLUS にスクリプトを実行させたい場合、コマンドラインリダイレクトよりも良い方法は @ 構文です:

sqlplus ms/ms@orcl @drop.sql
sqlplus ms/ms@orcl @create.1.0.sql

また、同じディレクトリ内の別の .sql スクリプトから .sql スクリプトを実行するために使用できる @@ 構文についてもお読みください。

SQL> help @
SQL> help @@
于 2009-12-10T02:03:48.763 に答える
0

< の代わりに @ を使用するように変更しました。これでエラーは回避されますが、スクリプトは最初のファイルのみを実行し、SQL> プロンプトが表示されます。実行する 2 番目のファイルを取得するには、プロンプトで exit と入力する必要があります。その後、2 番目のファイルが実行されます。両方のファイルを実行する方法がわかりません。??

最終的に、sql plus を実行して終了し、この問題を回避するための python スクリプトを作成しました。私はまだその制限を回避する方法を見つけていません。@@提案されたように使用する場合、問題に一度だけ対処する必要がありますが. 最初のスクリプトから 2 番目のスクリプトを実行するだけで済みます。

于 2009-12-10T17:22:25.533 に答える