JDBC驱动支持存储过程的{call proc}调用方式
功能描述
Vastbase在SQL Server兼容模式下,针对存储过程的出入参和结果集混合场景,支持在JDBC驱动中使用callableStatement的{call proc(?,?)}样式调用含有查询语句的存储过程,并正常返回出参和结果集。
注意事项
该功能仅在数据库兼容模式为SQL Server时支持(即数据库实例初始化时指定DBCOMPATIBILITY='MSSQL')。
使用此功能需要设置GUC参数behavior_compat_options的值为block_return_multi_results。
示例
1、创建表并插入数据。
create table t_1175243(col1 int,col2 int);
insert into t_1175243 values(10,10),(20,10);
2、创建存储过程,出入参和结果集混用。
create or replace procedure proc_1175243(a int,b inout int, c out int,d out int) as
begin
a := a+1;
b := b+1;
c := a+b;
d := c+100;
select a+10 from t_1175243;
select b+100 from t_1175243;
select a,b,c,d;
end;
/
3、设置GUC参数。
set behavior_compat_options=block_return_multi_results;
4、调用存储过程。
call proc_1175243(2,199,1,1);
返回结果如下:
?column?
----------
13
13
(2 rows)
?column?
----------
300
300
(2 rows)
a | b | c | d
---+-----+-----+-----
3 | 200 | 203 | 303
(1 row)
CALL