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

Send result of SQL procedure in a file with a script sh

我在一个文件中有一个 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('','');
   dbms_output.put_line( 'result: ' || var_truc_result);
end;
/
exit
SCRIPT`

sqlplus "system/ADMIN" <<!
exec export_csv([=11=],);
!

echo var_truc_result is: "$result"

经过一些搜索,我创建并测试了一个小代码片段以从 dbms_output 获取打印的文本。

#!/bin/bash

result=$(sqlplus64 -S <username>/<password>@<IPADDRESS>/<SERVICENAME> << EOF
set serveroutput on;
begin
   dbms_output.put_line('hello '||'[=10=]');
end;
/
exit;
EOF
)
echo "result=$result"
  • 你只需要处理 $result 变量来 grep 你的输出。 我 运行 它在 debian 8 下,我没有 ksh 但使用了 bash 和我的 sqlplus bin 名称 sqlplus64.

  • sqlplus -S参数解释

    -S Sets silent mode which suppresses the display of the SQL*Plus banner, prompts, and echoing of commands.

  • 此外,这是另一个计算器 question 和从 sqlplus 获得 select 查询结果的好答案。

希望本文能帮助您解决问题。