ERP系统中如何将多authorize_id传入API批量获取USERID?
解决ORA-01427错误,批量获取QA组审批人USERID
这问题我之前配置ERP审批通知时也碰到过!你遇到的ORA-01427: single-row subquery returns more than one row错误,根源在于你把返回50行的子查询直接塞给了只接受单个值的函数参数——Oracle没办法一次性把多个ID当成一个参数处理。
正确的批量查询写法
你只需要把purch_authorize_group_line作为主表,对每一行的authorize_id逐个调用purchase_authorizer_api.get_userid函数就行:
SELECT purchase_authorizer_api.get_userid('30', pagl.authorize_id) AS user_id, pagl.authorize_id -- 可选:同时返回原始审批人ID方便核对 FROM purch_authorize_group_line pagl WHERE pagl.authorize_group_id = '30-QA-NUC';
为什么这个写法可行?
这个语句会遍历purch_authorize_group_line中所有属于QA组的审批人记录,对每一条记录的authorize_id单独调用get_userid函数,最终返回50条对应的USERID结果,正好满足你批量获取的需求。
拿到这些USERID之后,你就可以在ERP的事件配置里,把它们作为收件人列表,发送PO待审批的邮件通知给QA组的所有成员了。
内容的提问来源于stack exchange,提问作者krebshack
相关产品推荐
相关产品推荐

