浏览 1967 次
锁定老帖子 主题:用java池调用动态存储过程的问题?
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-16
在第一次调用存储过程的时候,能够得到正确的结果,但是在第二次及以后连续调用时,由于java池的作用,会得到错误的结果。 这是配置文件: <!--todo connect pool --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="jdbcUrl"> <value>jdbc:oracle:thin:@132.228.70.101:1521:dbtest13</value> </property> <property name="user"> <value>crm</value> </property> <property name="password"> <value>crm</value> </property> <!-- C3P0 properties --> <property name="initialPoolSize"> <value>5</value> </property> <property name="minPoolSize"> <value>1</value> </property> <property name="maxPoolSize"> <value>1</value> </property> <property name="maxStatements"> <value>0</value> </property> <property name="checkoutTimeout"> <value>5000</value> </property> <property name="maxIdleTime"> <value>5</value> </property> <property name="idleConnectionTestPeriod"> <value>3000</value> </property> <property name="acquireIncrement"> <value>5</value> </property> </bean> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-17
之前这个问题发错地方了,被投入门贴了。
这个问题经过查找,发现了问题的所在。 oracle中在调用存储过程时,同一个package中的全局变量,如果同一个session连续调用,那么第二次调用时,全局变量的值会是上次调用时的结果。 正是这个性质引起了我提出的问题。之前有一个全局变量的值没有初始化,第一次调用时,此值是空,执行业务规则能够得到正确的值,第二次调用时,全局变量是上次执行后的结果,而且这个变量在一开始就被直接使用判断了值,所以出现了错误的流程。 因此在oracle中使用全局变量时,一定要给全局显示变量初始化。 |
|
返回顶楼 | |