VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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