我在SQL Server 2005中存儲的過程,它看起來像下面(簡化)NullPointerException異常與CallableStatement.getResultSet()
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中這個PROC,一切工作正常。但是,當我從Java程序中調用相同的進程時,使用類似於:
cs = connection.prepareCall("exec proc ?,");
cs.setParam(...);
rs = cs.getResultSet(); // BOOM - Null!
while(rs.next()) {...} // NPE!
我不明白爲什麼返回的第一個結果集是NULL。誰可以給我解釋一下這個?
作爲一種解決方法,如果我檢查cs.getMoreResults()並且如果爲true,請嘗試另一個getResultSet() - 這一次它返回正確的結果集。
任何指針請? (我使用JTDS驅動程序,如果它的事項)
感謝, 拉吉
嗯。你在某個時候調用過'cs.execute()'或'cs.executeQuery()'嗎? – msandiford 2010-06-16 04:53:07