使用脚本sh在文件中发送SQL过程的结果

时间:2015-09-22 07:44:47

标签: sql-server oracle shell stored-procedures sqlplus

我在文件中有一个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"

1 个答案:

答案 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查询结果的良好答案。

我希望这可以帮助您解决问题。