使用从 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 格式的输出