CallableStatement callstmt = null;
String proc = "{call pkgInsertCircuitPort.insertCircuitPort(?)}";
callstmt = getConn().prepareCall(proc);
callstmt.setString(1, "111111");
isSuccess = callstmt.execute();
execute的时候,通过日志,发现取值失败!!!
就是取不到操作2的数据
String proc = "{call pkgInsertCircuitPort.insertCircuitPort(?)}";
callstmt = getConn().prepareCall(proc);
callstmt.setString(1, "111111");
isSuccess = callstmt.execute();
execute的时候,通过日志,发现取值失败!!!
就是取不到操作2的数据
第一只能用JDBC调用SQL控制事务
第二可以在存储过程里面用PL/SQL控制事务
还有就是我的存储过程没有使用commit和rollback;纯粹就是让java的事物来进行rollbak或commit;
并且执行的结果可以在JAVA里边查询得到,代码如下create or replace package body test is
PROCEDURE TEST_INSERT IS
BEGIN
INSERT INTO ITEM01(CD,ITEM_NAME,STD) VALUES('00000009','TESTINSERT','CCC');
END;
end test;
try {
CallableStatement vCs = null;
vCs = (CallableStatement) pConn.prepareCall("{call test.TEST_INSERT}"); pConn.setAutoCommit(false);
vCs.execute();
PreparedStatement pstmt = pConn.prepareCall("SELECT ITEM_NAME FROM ITEM01 WHERE CD = ?");
pstmt.setString(1, "00000009");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String name = rs.getString("ITEM_NAME");
System.out.println(" name is " + name);
}
pConn.rollback();
} catch (SQLException sqle) {
throw sqle;
}
java后台效果
name is TESTINSERT
plsql查询表
SQL> select * from item01 t
2 /CD ITEM_NAME STD
-------- -------------------- --------------------
00000001 1111 1
00000002 2222 1
002 nametest1 st1d
003 nametest1 st1dSQL
多谢了