存储过程如下:
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)
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)
解决方案 »
- Spring整合Hibernate后,如何使用SchemaExport生成数据库表
- spring切面方法未执行
- 关于 org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer
- 请问:网页上的这种遮罩效果是如何实现的?
- cascade save-update与all
- 集合Map删除问题
- Weblogic 8 部署 Struts2 遇到的问题
- jboss 3.2.1的问题
- 关于deploy ejb-jar
- 关于流的判断问题
- org.apache.batik.dom.util.SAXIOException: Content is not allowed in prolog.
- 远程传输annotation对象到老系统(譬如说1.4)的问题?
直接过程调用即可:
create ***** proc_call(p1 in number, p2 out number)
as
begin
proc1(p1,p2); --要求参数p1,p2都先声明
end;
/