sqlplusとOracleスプール機能を使用していくつかのデータをエクスポートしようとしています。問題は、エクスポートを定義しているSQL入力ファイルで、データのエクスポート元のテーブル名をパラメーター化できないことです。リテラルが必要です:(
シェルスクリプトでsqlplusを呼び出す:
sqlplus $USER/$PASSWD@$ORADB<<!
@export.sql $OUT_FILE $SOME_VAR $ENV
exit
!
export.sql:
set heading off
set head off
set term off
set tab off
set embedded on
set feedback off
set pagesize 0
set linesize 800
set trimspool on
set verify off
spool &1
SELECT '&2|' || some_col
FROM &3_TABLE
/
spool off
$ENVが'dev'に設定されている場合、
Enter value for 3_TABLE
一方、dev_TABLEを使用したいのですが。SQLファイルのテーブル名のパラメーターを解除すると、出力は正常に実行されます。また、シェルからの$ SOME_VARであるparam&2があり、正常に評価されて表示されることにも注意してください。唯一の問題はFROMステートメントにあります。
SQLを実行する前にパラメータ化されたテーブル名を置き換えるようにSQL入力ファイルに指示する方法はありますか?
ありがとう