0

テキスト ファイルから配列にエントリを保存したシェル スクリプトを作成しています。これらの値は適切に保存され、正しい内容が表示されます。これらのエントリの 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 だけを使用することはできません。

4

1 に答える 1