У меня есть хранимая процедура в 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() и если это правда, попробуйте еще один getResultSet() - НА ЭТОТ раз он возвращает правильный набор результатов.
Любые указатели, пожалуйста? (Я использую драйверы JTDS, если это имеет значение)
Спасибо, Радж
cs.execute()
илиcs.executeQuery()
? - person clstrfsck   schedule 16.06.2010