int returnValue = st.getInt(1);

解决方案 »

  1.   

    我调用存储过程和你的方法不一样,Sorry,我的代码帖出来给你,用的是Hibernate3.05
    实际上我这个方法是用的JDBC的方法调用的=============================================================
    package com.dc.tirip.dis.configuration.dao;import java.sql.CallableStatement;
    import java.sql.SQLException;
    import java.sql.Types;import com.dc.tirip.common.framework.dbconfig.HibernateUtil;
    import com.dc.tirip.common.logging.ILogger;public class DisServiceConfigDao {
        /**
         * 日志记录
         */
        private static ILogger log = ILogger.Factory.getLogger(DisServiceConfigDao.class);    /**
         * 获取服务配置,注意参数顺序
         * 
         * @param channelId
         *            渠道标识
         * @param serviceId
         *            服务标识
         * @param platformId
         *            平台标识
         * @param channelType
         *            渠道类型
         * @param nsrsbh
         *            纳税人识别号
         * @return
         */
        public static DisServiceConfig getDisServiceConfig(String channelId, String serviceId, String platformId,
                String channelType, String nsrsbh) {
            DisServiceConfig serviceConfig = new DisServiceConfig();
            serviceConfig.setChannelId(channelId);
            serviceConfig.setServiceId(serviceId);
            serviceConfig.setPlatformId(platformId);
            serviceConfig.setChannelType(channelType);
            serviceConfig.setNsrsbh(nsrsbh);
            int returnCode = 101;
            CallableStatement cstmt = null;
            
            try {
                // 取得Hibernate数据库连接
                java.sql.Connection conn = HibernateUtil.currentSession().connection();
                
                // 准备存储过程
                cstmt = conn.prepareCall(
                 "begin :1 := P_XT_GET_SERVICE_CONFIG(:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14); end;");
    //                    "{ ?=call P_XT_GET_SERVICE_CONFIG(?,?,?,?,?,?,?,?,?,?,?,?,?) }");
                cstmt.registerOutParameter(1, Types.INTEGER);
                cstmt.registerOutParameter(7, Types.VARCHAR);
                cstmt.registerOutParameter(8, Types.VARCHAR);
                cstmt.registerOutParameter(9, Types.VARCHAR);
                cstmt.registerOutParameter(10, Types.VARCHAR);
                cstmt.registerOutParameter(11, Types.VARCHAR);
                cstmt.registerOutParameter(12, Types.VARCHAR);
                cstmt.registerOutParameter(13, Types.VARCHAR);
                cstmt.registerOutParameter(14, Types.INTEGER);
                cstmt.setString(2, channelId);
                cstmt.setString(3, serviceId);
                cstmt.setString(4, platformId);
                cstmt.setString(5, channelType);
                cstmt.setString(6, nsrsbh);            // 执行存储过程
                cstmt.execute();            // 取得输出参数
                returnCode = cstmt.getInt(1);
                serviceConfig.setIsTransform(cstmt.getString(7));
                serviceConfig.setIsVerifyDataLogic(cstmt.getString(8));
                serviceConfig.setIsVerifyDataSemantic(cstmt.getString(9));
                serviceConfig.setIsVerifyDataCRC(cstmt.getString(10));
                serviceConfig.setZipType(cstmt.getString(11));
                serviceConfig.setEncryptType(cstmt.getString(12));
                serviceConfig.setCodeType(cstmt.getString(13));
                serviceConfig.setTransactPriority(new Integer(cstmt.getInt(14)));        } catch (SQLException e) {
                log.warn("调用存储过程出错,无法获得配置:", e);
            }
            finally
            {
                if(cstmt != null)
                {
                    try
                    {
                        cstmt.close();
                    }
                    catch(SQLException e)
                    {
                        log.warn("调用存储过程出错,无法获得配置:", e);
                    }
                    cstmt = null;
                }
            }
                    // 设置执行结果
            serviceConfig.setReturnCode(returnCode);        if (log.isDebugEnabled()) {
                log.debug(serviceConfig.toString());
            }
            return serviceConfig;
        }    public static void main(String[] s) {
            String channelId = "S110";
            String serviceId = "0";// "SBTY31";
            String platformId = "0S00";
            String channelType = "J";
            String nsrsbh = "0";        DisServiceConfig businessConfig = getDisServiceConfig(channelId, serviceId, platformId, channelType, nsrsbh);
            log.debug("businessConfig=" + businessConfig.toString());
        }
    }