将数据存储到过程中的out参数游标中
Store data into out parameter cursor in procedure
我想在过程中使用游标作为输出参数,但是,当我在 java 中执行时,游标 returns me 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;
}
下面是使用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;
我想在过程中使用游标作为输出参数,但是,当我在 java 中执行时,游标 returns me 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;
}
下面是使用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;