テキスト ファイルから配列にエントリを保存したシェル スクリプトを作成しています。これらの値は適切に保存され、正しい内容が表示されます。これらのエントリの 1 つに単純なクエリが含まれており、それを SQL ファイルに渡したいと考えています。その sql クエリを使用して、結果をテキスト ファイルに保存します。
これは、SQLファイルを呼び出してSQLスクリプトを実行するコードの一部です
PURGE_SITES=purge_site.txt
logmsg "USERID - $PURGES_SITE" n
QUERY=${Unix_Array[4]}
echo $QUERY
sqlplus -s $USER/$PASS <<EndSQL
@purges_sites.sql $PURGE_SITES '$QUERY'
EXIT SQL.SQLCODE
EndSQL
今のところ、${Unix_Array[4]} に格納されているクエリは「select -1 from dual」です
.sql ファイルの内容は次のとおりです。
set echo off ver off feed off pages 0
accept fname prompt 'Loading Sites...'
spool &1;
&2
/
spool off
エラーが発生し、変数に保存されたクエリではなく、&2 が "&2" として読み取られます。ただし、.sql ファイルを編集して事前に何かを追加すると、変数から正しいデータが表示されます。
ここに出力があります
select -1 from dual
File Name===> results.txt
select -1 from dual
Loading Sites...SP2-0042: unknown command "&2" - rest of line ignored.
SP2-0103: Nothing in SQL buffer to run.
&2 の前に何かを追加した場合の出力は次のとおりです。
select -1 from dual
File Name===> results.txt
select -1 from dual
Loading Sites...select * from table_table select -1 from dual
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
&2 の前に select * from table_table と入力しました。したがって、実際には変数から値を取得していますが、正しく渡すためには事前に何かを取得する必要があります。
クエリを実行するシステム実行コマンドがオラクルにありますか? &2 だけを使用することはできません。