我在文件中有一个SQL过程,我想在sh脚本中调用此过程,然后将结果发送到一个文件中(无论文件在哪里)。
我不知道我是否表现不错,但在这里我写的是:
#!/bin/ksh
#exit 0
VAR=$(sqlplus /NOLOG <<!
connect E760/E760@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST=p595n11)(PORT=1521))(CONNECT_DATA = (SID = DBUVNSD5)))@PA_IND_DELAYS_BODY.sql;
!)
result=`sqlplus / <<SCRIPT| grep ^result | sed "s/^result: //"
set serveroutput on
declare
var_truc_result VARCHAR2(255);
begin
export_csv('$1','$2');
dbms_output.put_line( 'result: ' || var_truc_result);
end;
/
exit
SCRIPT`
sqlplus "system/ADMIN" <<!
exec export_csv($0,$1);
!
echo var_truc_result is: "$result"
答案 0 :(得分:1)
经过一些搜索,我创建并测试了一个小代码片段,以便从dbms_output获取打印文本。
<span><%= auto_link(@job.apply.to_s) %></span>
<span><%= auto_link("#{@job.apply}") %></span>
<span><%= auto_link(@job.apply) if @job.apply %></span>
您只需要处理#!/bin/bash
result=$(sqlplus64 -S <username>/<password>@<IPADDRESS>/<SERVICENAME> << EOF
set serveroutput on;
begin
dbms_output.put_line('hello '||'$0');
end;
/
exit;
EOF
)
echo "result=$result"
变量来grep您的输出。
我在debian 8下运行它,我没有ksh但是使用了bash和我的sqlplus bin名称sqlplus64。
sqlplus -S参数说明
-S设置静音模式,禁止显示 SQL * Plus横幅,提示和回显 命令。
此外,这是另一个stackoverflow question以及从sqlplus获取$result
查询结果的良好答案。
我希望这可以帮助您解决问题。