在一个项目的存储过程中看见,如果这个存储过程是查询,它就在传入查询条件声明的变量后面就总是有
          IN_BUY_SELL_FG_CD           IN          ACNT_TAX120.BUY_SELL_FG_CD                     %TYPE,
          IN_BILL_FG_CD               IN          ACNT_TAX120.BILL_FG_CD                         %TYPE,          --  RETURN    VALUE
          OUT_CUR                  OUT      ResultType.CURSORTYPE,
          OUT_RTN                  OUT      INTEGER,
          OUT_MSG                  OUT      VARCHAR2
有out那部分是,只要是查询就会有的,为什么每个存储过程都有呢.看到他在java文件中是这么写的
cstmt.registerOutParameter(44, OracleTypes.INTEGER);
cstmt.registerOutParameter(45, OracleTypes.VARCHAR);
cstmt.registerOutParameter(46, OracleTypes.VARCHAR);
谁能详细说说呢...

解决方案 »

  1.   

    查询肯定要有查询结果,这个存储过程里应该是有47个参数,45,46,47分别是OUT_CUR,OUT_RTN,OUT_MSG三个返回参数,OUT_CUR用来存放查询结果数据;OUT_RTN用来返回查询是否成功,如果查询中遇到错误,该值一般设置为0以外的值,这样在java端以OUT_RTN来判断是否查询成功;OUT_MSG一般用来放错误信息
      

  2.   

    这三个是你的存储过程的返回的值,是一些公共的信息,所以每个都有。OUT_CUR                  OUT      ResultType.CURSORTYPE,// 游标类型
              OUT_RTN                  OUT      INTEGER,    // 存储过程的编号
              OUT_MSG                  OUT      VARCHAR2    // 调用存储过程后的信息