使用从 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的主要内容,如果未能解决你的问题,请参考以下文章