1

ksh スクリプトを使用して Oracle データベースに接続しようとしています。これをプロンプトから直接実行すると、機能します。しかし、スクリプト (abc.sh) 内に配置すると失敗します。以下は私がスクリプトに入れたものです(短くするために編集されています):

abc はユーザー名で、abc$123 はデータベース DBNAME にアクセスできるユーザーのパスワードです。

 #!/usr/bin/ksh

 sqlplus -s /nolog << EOF > output
 connect abc/abc$123@DBNAME;

 set echo off
 set heading off

 select table_name from dba_tables;
 exit;
 EOF

これは直接入力すると機能しますが、./abc.sh として実行するとエラーが発生します -

 ERROR ORA-01017: invalid username/password; logon denied

簡単なものが欠けていると確信していますが、これを理解できません。ご協力いただきありがとうございます。

4

1 に答える 1

2

このようなコードを記述して、関連するプログラムに渡されることを期待することはできません。SQL 行は、SQL サーバーではなく KSH によって実行されています。代わりに、次の行に沿ってさらに何かを行う必要があります。

echo "SQL CODE HERE" | sqlplus ....
于 2013-11-01T10:18:54.013 に答える