将多个值传递给API /获取多个值

时间:2018-05-14 17:03:40

标签: sql oracle plsql erp

这是我今天要解决的问题。我们有一个ERP系统,我需要设置一个事件,以便在他们准备好批准采购订单时通过电子邮件发送采购订单授权人(POA)。对于我们有一个授权人的采购订单,这很容易设置。但是,在获得批准之前,某些采购订单需要由一组授权人(特别是我们的QA小组)进行审核。

我可以使用以下内容获取QA小组的授权人名单:

select authorize_id from purch_authorize_group_line where authorize_group_id = '30-QA-NUC';

此查询返回50行数据。

我还可以使用以下内容获取与授权ID相关联的USERID:

SELECT purchase_authorizer_api.get_userid('30','104351') FROM DUAL;

我无法弄清楚如何将第一个查询中的所有值传递给第二个查询。这个查询:

SELECT purchase_authorizer_api.get_userid('30',(select authorize_id from purch_authorize_group_line where authorize_group_id = '30-QA-NUC')) FROM DUAL;

返回错误“ORA-01427:单行子查询返回多行。”

所以,我想知道的是,我是否有办法将所有50个值从第一个查询传递到第二个查询,并为所有50个用户获取USERID。如果是这些USERID,那么当他们准备好批准PO时,我可以通过电子邮件向QA组发送通知。

2 个答案:

答案 0 :(得分:2)

也许你正在寻找这个。

SELECT purchase_authorizer_api.get_userid('30', authorize_id)
       FROM purch_authorize_group_line
       WHERE authorize_group_id = '30-QA-NUC';

答案 1 :(得分:1)

这应该有帮助 -

DECLARE
    V_VARIABLE VARCHAR2(1024);
BEGIN

FOR REC IN (SELECT AUTHORIZE_ID AS VAL FROM PURCH_AUTHORIZE_GROUP_LINE WHERE AUTHORIZE_GROUP_ID = '30-QA-NUC')
LOOP

SELECT PURCHASE_AUTHORIZER_API.GET_USERID('30',R.VAL) INTO V_VARIABLE FROM DUAL;

..
..
../* You code processing logic */


END LOOP;

END;
/