我有一个sqlplus脚本,它需要一些外部参数。这些参数应该来自java代码中的数组。我想将这些值传递给sql脚本,但不知道如何。请指导我。
我的sqlplus文件如下所示
SET ECHO OFF
SET HEADING OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET DEFINE ON
SET TRIMSPOOL ON
SET NEWPAGE NONE
SET TERMOUT OFF
spool &3/&2..&1..fn
select text
from dba_source
where name = '&2'
and type = 'FUNCTION'
and owner = '&1'
order by line
/
spool off
exit;
我用于在unix服务器中执行此文件的java代码如下所示。
try {
String line;
Process p = Runtime.getRuntime().exec(
"sqlplus -L user/pwd@SID @" + sqlFilePath);
BufferedReader input = new BufferedReader(new InputStreamReader(
p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
p.destroy();
} catch (Exception err) {
err.printStackTrace();
}
请指导我如何传递java代码中的字符串以在unix服务器中执行此sqlplus脚本。
编辑:我的解决方案
使用相同的查询创建临时文件并替换其中的参数。在上面的代码中执行了临时文件。