首先我的程序的目的是想把存储过程执行完后的结果集(或更新数)显示出来,程序如下String sql = "{call Test()}";
CallableStatement cstmt = conn.prepareCall(sql);
ResultSet rs = null;
int count = -1;
boolean result = cstmt.execute();
do
{
if(result==true) //如果是ResultSet类型
{
rs = cstmt.getResultSet(); //获取结果集
System.out.println("ResultSet:");
while(rs.next())
{
System.out.println(rs.getInt(1));
}
rs.close();
}
else //是更新数类型
{
count = cstmt.getUpdateCount(); //获取更新数
if(count!=-1)
System.out.println("Count:"+count);
else //既不是ResultSet类型,也不是更新数,退出
break;
}
result = cstmt.getMoreResults(); //下一结果集类型
}
while(true);在sybase下的存储过程:1.
create procedure Test
as
update AA set CONTENT='good' where AA_ID=11输出:
Count:1
Count:0奇怪怎么多了个 Count:0 输出????????????????2.
而如果把存储过程改为:
create procedure Test
as
select count(AA_ID) from AA输出:
ResultSet:
11这是正确的。3.
如果把两个结合在一起:
create procedure Test
as
update AA set CONTENT='good' where AA_ID=11
select count(AA_ID) from AA输出则为
Count:1
ResultSet:
11
Count:0奇怪 最后又多了一个 Count:0 ???????????????????就是说明,凡是update等的更新数时,怎么都多了个 0 出来??
CallableStatement cstmt = conn.prepareCall(sql);
ResultSet rs = null;
int count = -1;
boolean result = cstmt.execute();
do
{
if(result==true) //如果是ResultSet类型
{
rs = cstmt.getResultSet(); //获取结果集
System.out.println("ResultSet:");
while(rs.next())
{
System.out.println(rs.getInt(1));
}
rs.close();
}
else //是更新数类型
{
count = cstmt.getUpdateCount(); //获取更新数
if(count!=-1)
System.out.println("Count:"+count);
else //既不是ResultSet类型,也不是更新数,退出
break;
}
result = cstmt.getMoreResults(); //下一结果集类型
}
while(true);在sybase下的存储过程:1.
create procedure Test
as
update AA set CONTENT='good' where AA_ID=11输出:
Count:1
Count:0奇怪怎么多了个 Count:0 输出????????????????2.
而如果把存储过程改为:
create procedure Test
as
select count(AA_ID) from AA输出:
ResultSet:
11这是正确的。3.
如果把两个结合在一起:
create procedure Test
as
update AA set CONTENT='good' where AA_ID=11
select count(AA_ID) from AA输出则为
Count:1
ResultSet:
11
Count:0奇怪 最后又多了一个 Count:0 ???????????????????就是说明,凡是update等的更新数时,怎么都多了个 0 出来??
这个是什么意思?
true if the first result is a ResultSet object; false if the first result is an update count or there is no resultgetMoreResults()
true if the next result is a ResultSet object; false if it is an update count or there are no more resultsgetUpdateCount()
the current result as an update count; -1 if the current result is a ResultSet object or there are no more resultsgetResultSet()
the current result as a ResultSet object or null if the result is an update count or there are no more results
听说最好是利用Java来写,不要在SQL里写...