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

时间:2014-04-29 18:36:48

标签: java stored-procedures jdbc

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

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结构不匹配而且游标永远不会被打开。

0 个答案:

没有答案