如何使用Blue Prism调用存储过程及带输入参数的数据库包?
Blue Prism调用存储过程及数据库包的解决方案
一、通用存储过程调用步骤
- 先在Blue Prism里创建Database Connection对象,配置好目标数据库的连接信息(驱动、地址、账号密码等)
- 新建Process或Object,添加Execute SQL动作
- 根据数据库类型编写调用语句:
- SQL Server:
EXEC 存储过程名 @参数1=值1, @参数2=值2 - Oracle:
BEGIN 存储过程名(参数1, 参数2); END;
- SQL Server:
- 若需获取返回值,可通过Get Multiple Rows或Get Single Row动作读取结果集,或直接配置输出参数映射
二、你的数据库包调用格式调整
你提供的SQL在SQL Navigator可正常运行,但Blue Prism无法执行的核心原因是:Blue Prism不依赖dbms_output获取结果,需改用参数映射的方式处理。以下是两种可行的调整方案:
方法1:匿名块+输出参数映射
- 在Blue Prism的Execute SQL动作中,编写如下PL/SQL块:
DECLARE req CLOB := ?; resp CLOB; BEGIN resp := dbo.pkg_order_Transaction.get_order_history(req); ? := resp; END;
- 配置参数映射:
- 第一个
?绑定Blue Prism中的输入字符串变量(内容为{"ItemID":"12345678","splitRawAct":"0"}),参数方向设为Input - 第二个
?绑定Blue Prism中的输出字符串变量,参数方向设为Output
- 第一个
- 执行完成后,输出变量即可获取存储过程返回的CLOB结果
方法2:用查询直接返回结果
如果数据库支持,也可以将调用语句封装为查询,再通过Get Single Row动作读取结果:
SELECT dbo.pkg_order_Transaction.get_order_history('{"ItemID":"12345678","splitRawAct":"0"}') AS resp FROM DUAL
额外注意事项
- 确认Blue Prism使用的数据库驱动支持CLOB类型的参数传递与读取,若遇类型兼容问题,可尝试将CLOB转换为VARCHAR2(注意长度限制)
- 检查数据库用户是否拥有调用该包中存储过程的权限
- 提前验证JSON参数的格式,避免出现转义错误
内容的提问来源于stack exchange,提问作者Gary
相关产品推荐
相关产品推荐

