HasorDB 存储过程调用

2021-12-30 11:31 更新

HasorDB 支持存储过程的调用。以 MySQL 为例,有下例存储。执行存储过程后会产生 ​1​ 个入参,​1​ 个出参,​2​ 个结果集

drop procedure if exists proc_select_table;
create procedure proc_select_table(in userName varchar(200),
                                   out outName varchar(200))
begin
    select * from test_user where name = userName;
    select * from test_user;
    set outName = concat(userName,'-str');
end;

执行存储过程,并接收所有返回的数据

List<SqlParameter> parameters = new ArrayList<>();
parameters.add(SqlParameterUtils.withInput("dative", Types.VARCHAR));
parameters.add(SqlParameterUtils.withOutputName("outName", Types.VARCHAR));

String querySql = "{call proc_select_table(?,?)}";
Map<String, Object> result = jdbcTemplate.call(querySql, parameters);

执行结果中获取输出参数的方式如下:

String outName = resultMap.get("outName");

执行结果中分别获取两个 select 结果的方式如下:

// 第一个 select 的结果
List<Map<String, Object>> result1 = resultMap.get("#result-set-1");

// 第二个 select 的结果
List<Map<String, Object>> result2 = resultMap.get("#result-set-2");
提示
通过 ​jdbcTemplate.call​ 调用存储过程返回的结果集,只会以 ​List/Map ​形式返回。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号