- 论坛徽章:
- 0
|
RT
下面是我的表结构与存储过程代码:
SQL> desc tmp
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER
VALUE VARCHAR2(10)
SQL> select text from user_source where name='TMP_I';
TEXT
--------------------------------------------------------------------------------
procedure tmp_i
as
begin
delete from tmp;
for i in 1..10 loop
insert into tmp values(i,chr(i+64));
end loop;
end;
SQL> select text from user_source where name='TMP_U';
TEXT
--------------------------------------------------------------------------------
procedure tmp_u(v_id tmp.id%type)
as
begin
update tmp set value = 'aa' where id=v_id;
end;
下面是我的Java代码:
import java.sql.* ;
public class dbtest {
public static void main(String[] args) throws SQLException {
String className,url,uid,pwd;
className = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@192.168.1.8:1521:TBTDB";
uid = "scott";
pwd = "tbtscott2006";
String sql="";
int c=999;
Connection conn=null;
CallableStatement proc1 = null;
CallableStatement proc2 = null;
try
{
Class.forName(className);
conn = DriverManager.getConnection(url,uid,pwd);
proc1 = conn.prepareCall("{ call tmp_i() }");
proc1.execute();
proc1.close();
proc2 = conn.prepareCall("{ call tmp_u(?)}");
proc2.setInt(1,1);
proc2.execute();
c=proc2.getUpdateCount();
proc2.close();
System.out.println(c);
System.out.println("OK");
}
catch (Exception e)
{
e.printStackTrace();
conn.rollback();
System.out.println("ERROR");
System.out.print(e.getMessage());
}
finally
{
conn.close();
}
}
}
执行没有什么问题,成功执行了Insert,也成功执行了Update,可变量 c 始终得到的值是 -1,但如果不是调用Procedure,而是直接用Java执行Update语句,变量 c 就可以得到正确的返回值。很是郁闷!
求问题原因或解决方法,万分感谢! |
|