我正在创建一个 shell 脚本,我将文本文件中的条目保存到数组中。这些值已正确存储并显示正确的内容。其中一个条目包含一个简单的查询,我想将它传递给一个 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。所以它实际上是从变量中检索值,但需要事先来一些东西才能正确传递。
oracle中是否有系统执行命令可以执行查询?&2 本身是不允许的。