【发布时间】:2021-07-06 14:24:54
【问题描述】:
让我们假设以下 JDBC 中的虚拟示例:
Statement statement = connection.createStatement();
statement.execute("select * from X; call sp1(); select * from Y; call sp2(); select * Z");
int uc = statement .getUpdateCount();
boolean isResult = (uc == -1);
do
{
if( isResult )
{
ResultSet rs = statement.getResultSet();
if( rs != null )
{
doSomethingWithRS( rs );
}
}
else
{
System.out.println( "update count: " + uc );
}
}
while( ( isResult = statement.getMoreResults() ) || ( uc = statement.getUpdateCount() ) != -1 );
众所周知,某些数据库/驱动程序允许执行多条语句(以 SQL Server 为例)。请注意,有 5 条语句在数据库端一一执行。驱动程序发出未知数量的结果集。这是因为存储过程可能会返回任意数量的结果集,具体取决于它们的内部结构。
对于每个检索到的结果集,有什么方法可以识别它属于哪个特定语句?
注意,我发布了另一个question,重点是确定可能回答主题中问题的存储过程信息。不过,我希望 JDBC 本身可能有办法解决这个问题。
【问题讨论】: