There is a difference between the sybase versions used in Weblogic and Tomcat. So, it is behaving strangely. I got a workaround of implementing my logic within the catch block (though it is not a good practice).
cmathrusse wrote: > > Could it be that your datasource in Tomcat is pointing to a different > database than your datasource in WebLogic? If you look at the exception > message it is coming from the database itself and not your stored proc. > (It doesn't contain your formatting) > > Chris > > > > > prabho <[EMAIL PROTECTED]> > 06/25/2008 04:25 PM > Please respond to > [email protected] > > > To > [email protected] > cc > > Subject > Ibatis queryForList in Sybase Database > > > > > > > > Hi all, > > When I am trying to execute a stored procedure in Sybase Database, it is > failing, if the entry is not present in the DB table. If the entry is > present, it works fine. We have the same code in the Weblogic and is > working > fine. But seems like in tomcat, some more configuration needs to be made. > > I have provided the code details. > > Java Code > ======== > Map<String, String> parmMap = new HashMap<String, String>(); > > parmMap.put("configParmName", configParmName); > > try > { > startTxn(sqlMap); // Just a wrapper for startTransaction > > sqlMap.flushDataCache(); > > List resultList = sqlMap.queryForList("getConfigParmData", > parmMap); > > String status = (String) parmMap.get("statusString"); > > if (status.indexOf("Error:") > 0) > if (status.indexOf("Return code 906") <= 0) > throw new SQLException(status); > > commitTxn(sqlMap); // Just a wrapper for commitTransaction > > return resultList; > } catch (SQLException sqlE) { > throw wrapSqlException(sqlE); > } finally { > endTxn(sqlMap); // Just a wrapper for endTransaction > } > > Stored Proc (Sybase) > ========= > > CREATE PROCEDURE get_ConfigParm > @config_parm_name udt_short_name, > @statusString varchar( 1024 ) = NULL > OUTPUT > AS > > DECLARE > @error int, > @rowcount int, > @statusInfo varchar( 1024 ), > @ret_code int, > @create_date udt_datetime, > @valid char(1), > @procname varchar(35), > @error_code varchar(5), > @num_rows varchar(5) > > > SELECT @procname = OBJECT_NAME( @@procid ) > > SELECT > @statusInfo = ISNULL( @@servername, 'UNKNOWN' ) + '.' > + DB_NAME() + '.' + @procname > , > @statusString = ' Successful' > > > SELECT > config_parm_name, > parm_datatype, > config_parm_desc, > create_date, > create_user_id, > modify_date, > modify_user_id > FROM > ConfigParm > WHERE > config_parm_name = @config_parm_name > > -- Status check > SELECT > @error = @@error, > @rowcount = @@rowcount > > -- Check for error > If( @error != 0 ) > BEGIN > select @ret_code = 904, > @error_code = CONVERT( varchar(5), @error ) > SELECT @statusString = @statusInfo + ' Error: [' > + convert( varchar(5), @error ) + '] selecting config_parm_name [' > + > + @config_parm_name + '] from ConfigParm table- Return code ' > + CONVERT( varchar(5), @ret_code) > RAISERROR 25012, 'GET', 'ConfigParm' , @error_code > RETURN 904 > END > -- Check for no rows > IF( @rowcount = 0 ) > BEGIN > select @ret_code = 906 > SELECT @statusString = @statusInfo + ' Error: config_parm_name [' + > + @config_parm_name + '] does not exist in ConfigParm table- > Return > code ' > + CONVERT( varchar(5), @ret_code) > RAISERROR 25014, "config_parm_name", > @config_parm_name,"ConfigParm",'GET' > RETURN 906 > END > > -- Check for multiple rows > IF( @rowcount > 1 ) > BEGIN > SELECT @statusString = @statusInfo + ' Warning: Select affected [' > + convert( varchar(5), @rowcount ) + '] ConfigParms' > END > > RETURN 0 > > XML Data > ======= > <parameterMap id="getConfigParmDataMap" class="map" > > <parameter property="returnCd" > jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/> > <parameter property="configParmName" > jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> > <parameter property="statusString" > jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/> > </parameterMap> > > <procedure id="getConfigParmData" > parameterMap="getConfigParmDataMap" > resultClass="java.util.HashMap" > cacheModel="siteConfigCache" > > {? = call get_ConfigParm(?, ?) } > </procedure> > > Error > ==== > Caused by: com.sybase.jdbc3.jdbc.SybSQLException: ** config_parm_name > DEV_WRPSYSCONFIG_1 does not exist in ConfigParm table- GET operation can > not > be completed *** > at com.sybase.jdbc3.tds.Tds.a(Unknown Source) > at com.sybase.jdbc3.tds.Tds.nextResult(Unknown Source) > at com.sybase.jdbc3.jdbc.ResultGetter.nextResult(Unknown > Source) > > Can anyone, let me know how to fix this issue?? > > Regards > Prabhu > -- > View this message in context: > http://www.nabble.com/Ibatis-queryForList-in-Sybase-Database-tp18123663p18123663.html > > Sent from the iBATIS - User - Java mailing list archive at Nabble.com. > > > > > -- View this message in context: http://www.nabble.com/Ibatis-queryForList-in-Sybase-Database-tp18123663p18141440.html Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
