返回首页

gbase数据、南大通用产品文档:GBase8c高级包

更新日期:2024年09月11日

本章介绍高级包的基础接口。

注意
针对单个SQL,存在配置某个参数性能可能有极大提升的场景。因此需要
根据实际的业务场景,合理的修改配置参数。同时,由于配置参数的调整具
有全局性,
因此在不能保证对整体业务均有好效果的情况下,
一定要谨慎进
行全局参数调整。

GBase 8c 支持通过JDBC 直接调用事先创建的存储过程,步骤如下:
步骤1 调用Connection 的prepareCall 方法创建调用语句对象。
Connection myConn = DriverManager.getConnection("url","user","password");
CallableStatement cstmt = myConn.prepareCall("{? = CALL TESTPROC(?,?,?)}");
步骤2 调用CallableStatement 的setInt 方法设置参数。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
78
cstmt.setInt(2, 50);
cstmt.setInt(1, 20);
cstmt.setInt(3, 90);
步骤3 调用CallableStatement 的registerOutParameter 方法注册输出参数。
cstmt.registerOutParameter(4, Types.INTEGER); //注册out 类型的参数,类型为整型。
步骤4 调用CallableStatement 的execute 执行方法调用。
cstmt.execute();
步骤5 调用CallableStatement 的getInt 方法获取输出参数。
int out = cstmt.getInt(4); //获取out 参数
示例:
//在数据库中已创建了如下存储过程,它带有out 参数。
create or replace procedure testproc (
psv_in1 in integer, psv_in2 in integer, psv_inout in out integer
)
as begin
psv_inout := psv_in1 + psv_in2 + psv_inout; end;
/
步骤6 调用CallableStatement 的close 方法关闭调用语句。
cstmt.close();

很多的数据库类如Connection、Statement 和ResultSet 都有close()方法,在使用完
对象后应把它们关闭。要注意的是,
Connection 的关闭将间接关闭所有与它关联的
Statement,Statement 的关闭间接关闭了ResultSet。

一些JDBC 驱动程序还提供命名参数的方法来设置参数。
命名参数的方法允许根据
名称而不是顺序来设置参数,
若参数有默认值,
则可以不用指定参数值就可以使用
此参数的默认值。即使存储过程中参数的顺序发生了变更,也不必修改应用程序。
目前GBase 8c 数据库的JDBC 驱动程序不支持此方法。

GBase 8c 数据库不支持带有输出参数的函数,也不支持存储过程和函数参数默认
值。

当游标作为存储过程的返回值时,
如果使用JDBC 调用该存储过程,
返回的游标将

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
79
不可用。

存储过程不能和普通SQL 在同一条语句中执行。

存储过程中inout 类型参数必需注册出参。