GBase8c使用JDBC获取游标类型数据

GBase8c使用JDBC获取游标类型数据


当JDBC遇到cursor时,如何处理?
使用 jdbc 访问 GBase8c数据库里的 cursor 游标数据,可以通过下面用例获取游标数据。

一、创建自定义函数

CREATE OR REPLACE FUNCTION get_users()
RETURNS refcursor AS $$
DECLARE
    result_cursor refcursor;
BEGIN
    OPEN result_cursor FOR
        SELECT * FROM users;
    RETURN result_cursor;
END;
$$ LANGUAGE plpgsql;

二、创建测试表

create table users( id int, name varchar2(10));
insert into users values(1,'张三'),(2,'李四'),(3,'王五');

三、游标数据调用

try {
            // 1. 注册 GBase8c JDBC 驱动程序
            Class.forName("cn.gbase8c.Driver");
            
            // 2. 建立连接
            Connection connection = DriverManager.getConnection(jdbcURL, username, password);
            
            // 3. 调用存储过程
            String call = "{ ? = call get_users() }";
            connection.setAutoCommit(false);  //一定要加
            CallableStatement stmt = connection.prepareCall(call);
          
            // 4. 注册输出参数类型
            //stmt.registerOutParameter(1,OracleTypes.CURSOR ); 
            //stmt.registerOutParameter(1,1111 );
            stmt.registerOutParameter(1,Types.REF_CURSOR );
            
            // 5. 执行查询
            stmt.execute();
            
            // 6. 获取结果集
            ResultSet rs = (ResultSet) stmt.getObject(1);
            
            // 7. 处理结果集
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                // 根据需要处理其他字段
                
                System.out.println("ID: " + id + ", Name: " + name);
            }

需要注意的
1、setAutoCommit(false) 需要添加,如果缺少会存在异常报错
2、registerOutParameter的类型支持oracle 的OracleTypes.CURSOR、1111以及Types.REF_CURSOR

四、调用结果如下

PS E:\***\工具测试\jdbc>  & 'C:\Program Files\Java\jdk-1.8\bin\java.exe' '-cp' 'C:\Users\admin\AppData\Local\Temp\cp_ecrp2xm8badu5vq7hoznm7696.jar' 'jdbccallproc' 
ID: 1, Name: 张三
ID: 2, Name: 李四
ID: 3, Name: 王五

GBase 8c是基于openGauss3.0构建的一款多模多态的分布式数据库,支持行存、列存、内存等多种存储模式和单机、主备式、分布式等多种部署形态。GBase 8c具备高性能、高可用、弹性伸缩、高安全性等特性,可以部署在物理机、虚拟机、容器、私有云和公有云,为关键行业核心系统、互联网业务系统和政企业务系统提供安全、稳定、可靠的数据存储和管理服务。

posted @ 2024-07-29 14:18  奔跑的东哥  阅读(115)  评论(0)    收藏  举报