存储过程如下:
create or replace procedure transition(
p_balance in number, 
p_scale in number,
p_accountid in number,
p_chfg in number,
p_currency in String,
p_OrderId in String,
p_changeFlag in number,
p_ModiFlag in number,
p_transactFlag in number,
p_boolean out number)
is
p_return number;
begin
  update TRD_ACCINFOCTROL set balance=p_balance,initProportion=p_scale where 
         accountId=p_accountid and chFlag=p_chfg and MargCurrency=p_currency;
  p_return := SQL%ROWCOUNT;
  if p_return = 0 then
           ROLLBACK;  
            p_boolean := -1;
            return;
   else
            p_boolean := 0;
   end if;
  
  insert into TRD_RSKINFORM(OrderId,changeFlag,ModiFlag,transactFlag) 
   values(p_OrderId,p_changeFlag,p_ModiFlag,p_transactFlag);
      
  p_return := SQL%ROWCOUNT;
  if p_return = 0 then
           ROLLBACK;  
            p_boolean := -1;
            return;
   else
            p_boolean := 0;
   end if;
   commit;
    
   EXCEPTION
   WHEN OTHERS THEN
         ROLLBACK WORK;
         p_boolean := -1;
end transition;调用代码如下:
public boolean transition(final TrdAccinfoctrol accinfoctrol,
final TrdRskinform rskinform) { Session session = getSession();
String sql = "{call transition(?,?,?,?,?,?,?,?,?)}";
CallableStatement call = null;
boolean b = false;
try {
call = session.connection().prepareCall(sql);
call.setBigDecimal(1, accinfoctrol.getBalance());// 余额
call.setBigDecimal(2, accinfoctrol.getInitproportion());// 初始保证金比例
call.setInt(3, accinfoctrol.getId().getAccountid());// 帐户序号
call.setInt(4, accinfoctrol.getId().getChflag());// 钞汇标志
call.setString(5, accinfoctrol.getId().getMargcurrency());// 保证金币种
call.setString(6, rskinform.getOrderid());// 订单号
call.setInt(7, rskinform.getChangeflag());// 变动标志
call.setInt(8, rskinform.getModiflag());// 更改标志
call.setInt(9, rskinform.getTransactflag());// 处理标志
System.out.println(call.executeUpdate());
System.out.println(call.getInt(1)+"------------------");
if(0 == call.getInt(1)){
b = true;
}
} catch (HibernateException e) {
e.printStackTrace();
return b;
} catch (SQLException e) {
e.printStackTrace();
return b;
}
return b;
}错误如下:
信息: schema update complete
java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'TRANSITION' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:120)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:118)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:224)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:468)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:418)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1085)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:196)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1224)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1516)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3875)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:4064)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:8304)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:4092)
at com.hrfxb.persistence.impl.TrdAccinfoctrolImpl.transition(TrdAccinfoctrolImpl.java:43)
at com.hrfxb.persistence.service.DaoDataBase.transition(DaoDataBase.java:138)
at com.hrfxb.persistence.test.TransitionTest.testTransition(TransitionTest.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)