【问题标题】:Store data into out parameter cursor in procedure将数据存储到过程中的输出参数游标中
【发布时间】:2017-11-29 13:33:17
【问题描述】:

我想在过程中使用游标作为输出参数,但是当我在 java 中执行时,游标返回 null

这是我的程序

CREATE OR REPLACE PROCEDURE OBTENER_ESTADO (RESULTADO OUT SYS_REFCURSOR)
AS
BEGIN
CURSOR RESULTADO
IS SELECT ID, NOMBRE FROM ESTADOS;
CLOSE RESULTADO;
EXCEPTION
WHEN OTHERS THEN
NULL;
END OBTENER_ESTADO;

这是我的java代码

public List<EstadosMexico> procedimientoEstados(Connection conn){
    List<EstadosMexico> le = null;
    try{
        CallableStatement cs = conn.prepareCall("{ CALL OBTENER_ESTADO(?)}");
        cs.registerOutParameter(1, OracleTypes.CURSOR);
        cs.executeUpdate();
        ResultSet cursor = (ResultSet) cs.getObject(1);
        cs.close();
        le = new ArrayList();
        while(cursor.next()) {
            le.add(new EstadosMexico(cursor.getString(1), cursor.getInt(2)));
        }
        cursor.close();
    } catch(SQLException ex) {
        System.out.println(ex.getSQLState() + " " + ex.getMessage());
    }
    return le;
}

【问题讨论】:

    标签: java stored-procedures plsql cursor


    【解决方案1】:

    下面是使用SYS_REFCURSOR 作为过程的OUT 参数的方法。您的做法在语法上不正确。

    CREATE OR REPLACE PROCEDURE OBTENER_ESTADO (RESULTADO OUT SYS_REFCURSOR)
    AS
    BEGIN
       OPEN RESULTADO FOR 
       SELECT ID, NOMBRE FROM ESTADOS;
    EXCEPTION
       WHEN OTHERS
       THEN
          NULL;
    END OBTENER_ESTADO;
    

    【讨论】:

      猜你喜欢
      • 2017-07-19
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 2012-02-02
      • 2014-02-23
      • 2019-03-18
      相关资源
      最近更新 更多