executeQuery () предназначен для использования с запросами, которые возвращают ResultSet, обычно это операторы SELECT.
executeUpdate () предназначен для операторов INSERT, UPDATE, DELETE или DDL, которые возвращают количество обновлений.
Оба из вышеперечисленных (ResultSets и количество обновлений) рассматриваются JDBC как "результаты".Для запросов, которые возвращают несколько результатов, это требует, мы вызываем execute ().
Если хранимая процедура использует временные таблицы, вероятно, сначала она возвращает счетчик обновлений, а затем ResultSet.Вы должны использовать execute () для запуска запроса, вызвать getMoreResults (), чтобы пропустить счетчик обновлений, а затем вызвать getResultSet (), чтобы получить ResultSet, который вы хотите .Проблема здесь в том, что мы должны делать метод проб и ошибок, вызывая getMoreResults () несколько раз, чтобы получить нужный набор результатов, вызывая getResultSet ().
Вместо описанного выше метода проб и ошибок, вы можете подавить вседополнительные "результаты запроса", указав " SET NOCOUNT ON ".
Требуются изменения,
Поместите свою логику в SP "SPCHILD".Эта хранимая процедура будет иметь логику вместе с созданием временной таблицы.
Создайте SP "SPPARENT", как показано ниже,
CREATE PROCEDURE [dbo].[SPPARENT] @Id int = NULL
AS
BEGIN
SET NOCOUNT ON;
EXEC(' SPCHILD @Id = ' + @Id)
END
Из родительского SP "SPPARENT" у вас естьдля вызова вашего действующего SP, т.е. «SPCHILD».
Из вашего кода JDBC выполните вызов SP для «SPPARENT».