SQLPLusで実行され、ファイルにスプールされている4つのステートメントがあります。私は、次の実行、このファイルにスプールするSQLPlusのフィードバックによってNULL行が返される
:「100行が更新」
echo "whenever sqlerror exit sql.sqlcode ROLLBACK" > ${sql_tempfile}
echo "set echo off" >> ${sql_tempfile}
echo "set serveroutput on" >> ${sql_tempfile}
echo "set feedback on" >> ${sql_tempfile}
echo "set pagesize 0" >> ${sql_tempfile}
echo "set heading off" >> ${sql_tempfile}
echo "set linesize 80" >> ${sql_tempfile}
echo "set autocommit off" >> ${sql_tempfile}
echo "set exitcommit off" >> ${sql_tempfile}
echo "set sqlprompt \"$DB_NAME SQL>\"" >> ${sql_tempfile}
echo "set sqlnumber on" >> ${sql_tempfile}
echo "set newpage 0" >> ${sql_tempfile}
echo "set echo on" >> ${sql_tempfile}
echo "spool $TMPDIR/$filewoextension.log" >> ${sql_tempfile}
cat ${file} >> ${sql_tempfile}
echo "\n" >> ${sql_tempfile}
echo "spool off" >> ${sql_tempfile}
sqlplus/<<-eoSQL
@${sql_tempfile}
ファイルを調べるとき、私たちは行の一部がしていることがわかりますがまたは '100 rows merged。'と表示されますが、同じファイルには、「作成された行」を示すレコードがいくつかあります。
私はいくつかのステートメントに関する私のフィードバックがNULLとして返されている理由を知ることができません。これがファイルにスプールされた後、私は正規表現を使ってそれを読むことにします。そして、個々のステートメントから返される数値がないので、その後に問題があります。
同じことを開発環境で実行しようとしましたが、同じ問題はないようです。 Live環境にあるように見え、Oracle DBAは問題を特定できません。
何か助けていただければ幸いです。
おかげで、
スクリプトをインタラクティブに実行して少なくとも動作を確認できますか?私はなぜそれがあなたが見ている効果を生み出すのか分かりませんが、 'set feedback 1'は' on'よりも安全です。 –
申し訳ありませんが、私は$ {sql_tempfile}をDBAに渡したことを忘れていました。環境でファイルを実行すると、正しい結果がスプールされます。 –
同じアカウントから、同じディレクトリまたは同じデータベースから同じsqlplus実行可能ファイルを実行していますか?私は 'login.sql'や' glogin.sql'でいくつかの異なる設定があるかもしれないかどうか疑問に思っていましたが(私は思うことはできませんが)、あなたがTOADからそれを実行した場合には拾わないでしょう。 'set feedback 1'について。 –