Java 使用默认可调用语句参数的JDBC

Java 使用默认可调用语句参数的JDBC,java,stored-procedures,jdbc,Java,Stored Procedures,Jdbc,我有一个使用JDBC可调用语句调用的过程。第一个参数v_type有一个我想要使用的默认值。程序/代码被简化 PROCEDURE select_type(v_type IN VARCHAR2 DEFAULT 'All', cv_1 OUT SYS_REFCURSOR) AS BEGIN IF (v_type = 'All') THEN OPEN cv_1 FOR SELECT DISTINCT

我有一个使用JDBC可调用语句调用的过程。第一个参数v_type有一个我想要使用的默认值。程序/代码被简化

PROCEDURE select_type(v_type   IN     VARCHAR2 DEFAULT 'All',
                      cv_1     OUT SYS_REFCURSOR)
AS
BEGIN
   IF (v_type = 'All')
   THEN
      OPEN cv_1 FOR
         SELECT DISTINCT TYPE,
           FROM type_source;
   ELSE
      IF (v_type = 'NotAll')
      THEN
         OPEN cv_1 FOR
            SELECT DISTINCT type, desc,
              FROM OTHER_TYPE_SOURCE;
   END IF;
END;
这是我尝试的代码,假设null将触发默认值

callablestatement = connection.prepareCall("{ CALL select_type(?,?) } ") ;
callablestatement.setString(1, null);
callablestatement.registerOutParameter(2, OracleTypes.CURSOR);
callablestatement.execute();
resultset = (ResultSet)callablestatement.getObject(2); 

最后一行.getObject抛出游标关闭异常,可能是由于null参数与过程中的IF结构不匹配,并且游标从未打开

可能重复:我想你是对的,这是重复的。谢谢。您的评论可能与上面的2条评论重复。。