我在 SQL Server 2005 中有一个存储过程,如下所示(简化)
CREATE PROCEDURE FOO
@PARAMS
AS
BEGIN
-- STEP 1: POPULATE tmp_table
DECLARE @tmp_table TABLE (...)
INSERT INTO @tmp_table
SELECT * FROM BAR
-- STEP 2: USE @tmp_table FOR FINAL SELECT
SELECT abc, pqr
FROM BAZ JOIN @tmp_table
ON some_criteria
END
当我从 SQL Server Management Studio 运行这个过程时,一切正常。但是,当我从 Java 程序调用相同的 proc 时,使用类似:
cs = connection.prepareCall("exec proc ?,");
cs.setParam(...);
rs = cs.getResultSet(); // BOOM - Null!
while(rs.next()) {...} // NPE!
我不明白为什么返回的第一个结果集是 NULL。谁可以给我解释一下这个?
作为一种解决方法,如果我检查 cs.getMoreResults() 并且如果为真,请尝试另一个 getResultSet() - 这次它返回正确的结果集。
请问有什么指点吗?(如果重要的话,我正在使用 JTDS 驱动程序)
谢谢,拉吉