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() をチェックして true の場合は、別の getResultSet() を試してください。今回は適切な結果セットが返されます。
任意のポインタをお願いします? (問題がある場合は、JTDS ドライバーを使用しています)
ありがとう、ラージ