使用从 shell 脚本返回多个输出的 API 调用 PL/SQL

Posted

技术标签:

【中文标题】使用从 shell 脚本返回多个输出的 API 调用 PL/SQL【英文标题】:Call PL/SQL with API which returns multiple output from shell script 【发布时间】:2017-11-02 08:02:20 【问题描述】:

我需要在 shell 脚本中进行以下操作并在变量中获取输出。

p_message_code:= 'XXSYM_NON_PROD';    
                CBS_EMAIL_UTIL.GET_EMAIL_ADDR( p_message_code => p_message_code
                                         ,p_message_status => 'ALL'
                                         ,P_OU_ID => g_operating_unit
                                         ,x_from_email => x_from_email
                                         ,x_to_email => x_to_email
                                         ,x_cc_email => x_cc_email
                                         ,x_bcc_email => x_bcc_email
                                         );

           l_recipients := RTrim(x_to_email,',') ||','||RTrim(x_cc_email,',')||','||RTrim(x_bcc_email,',');
           l_recipients := sym_get_emails_from_DL(l_recipients);

我知道如何为单个输出获取它 - 但我需要从三个变量中获取,我们如何将这些 三个 获取 l_recipients 到 unix 变量、任何指针或示例代码会很有帮助的

【问题讨论】:

【参考方案1】:

假设你知道how to get the result of SQLPLUS into a shell variable,你可以做的就是把所有的东西都放到一个变量中,用,分隔,然后在shell中处理结果;

 string=#(how you get your result for one variable)
 recipients=$(echo "$string" | sed 's/,/ /g')
 set -- $recipients 
 rec_to=$1
 rec_cc=$2
 rec_bc=$3

从 PLSQL 获取结果:

string=`sqlplus / <<endl 
  set serveroutput on
  set feedback off

  begin
    -- your code
    dbms_output.put_line(l_recipients);
  end;
/
endl`

【讨论】:

以上是关于使用从 shell 脚本返回多个输出的 API 调用 PL/SQL的主要内容,如果未能解决你的问题,请参考以下文章

如何从在 C 中存储 shell 脚本输出的指针获取多个字符串?

使用 Shell 脚本运行 SQL 查询并返回 CSV 格式的输出

如何使用sqlplus在shell中存储存储过程返回的多个输出列

java调用shell脚本,并得到shell脚本的返回值

export命令

在 shell 脚本中返回多个值的习惯用法