此示例展示如何在编排平台上调用数据库的存储过程
(PROCEDURE)
和存储函数(PROCEDURE)
适用场景
◇ MySQL
和Oracle
存储过程调用(其余数据库也能支持,本流程暂未测试)
◇ MySQL
和Oracle
存储函数调用(其余数据库也能支持,本流程暂未测试)
◇ 存储函数和存储过程一样,都是在数据库中定义一些 SQL 语句的集合。存储函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数
◇ 存储函数与存储过程的区别
存储函数有且只有一个返回值,而存储过程可以有多个返回值,也可以没有返回值
存储函数只能有输入参数,而且不能带in
实现方式
◇ 通过 ExecuteStoreProcedure
组件实现
◇ 存储过程和存储函数定义
-- FUNCTION
delimiter //
create function bgy_wy.func_by_codeid_get_name(codeid varchar(64))
returns varchar(64)
READS SQL DATA
begin
return (select EMP_NAME from mdm_yg_query h where h.CODEID=codeid);
end //
delimiter ;
SELECT bgy_wy.func_by_codeid_get_name("27")
-- PROCEDURE
delimiter //
CREATE PROCEDURE bgy_wy.proc_by_codeid_get_name(IN p_codeid VARCHAR(10), OUT p_name VARCHAR(10))
BEGIN
set p_name=(select EMP_NAME from mdm_yg_query h where h.CODEID=p_codeid);
SELECT p_name;
END //
delimiter ;
CALL proc_by_codeid_get_name("27", @p_name)
-- 查看定义
SHOW CREATE { PROCEDURE | FUNCTION } sp_name
实现步骤
GenerateFlowFile
mock流文件启动流程UpdateAttribute
生成调用存储过程的请求参数(Params
),请求参数格式固定ExecuteStoreProcedure
组件参数
属性里面不支持表达式,所以如果参数需要通过变量获取值,可以在前面用UpdateAttribute
来设置Params
参数(此时需要将ExecuteStoreProcedure
组件的参数
设置为空,否则前面传递过来的Params
会不生效)ExecuteStoreProcedure
配置需要调用的方法名,并指定是调用存储过程还是存储函数- 调用存储过程或存储函数的
IN
、OUT
和IN/OUT
参数通过参数
属性来指定;参数
编写的语法固定,不能随意定义;可以通过高级④来在页面上完成参数设置
- 存储函数名称是大小写敏感的,所以配置的时候注意要和数据库中定义的函数名保持一致
- 调用存储过程或存储函数的