У меня есть сохраненный процесс в 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-программы, использую что-то вроде:
cs = connection.prepareCall("exec proc ?,");
cs.setParam(...);
rs = cs.getResultSet(); // BOOM - Null!
while(rs.next()) {...} // NPE!
Я не понимаю, почему первый возвращенный набор результатов равен NULL. Может кто-нибудь объяснить мне это?
В качестве обходного пути, если я проверю cs.getMoreResults () и если true, попробуйте другой метод getResultSet () - на этот раз он вернет правильный набор результатов.
Любые указатели, пожалуйста? (Я использую драйверы JTDS, если это имеет значение)
Спасибо,
Радж