Как использовать несколько таблиц данных, преобразованных из одной хранимой процедуры в другую хранимую процедуру в SQL Server

#sql #sql-server #stored-procedures #dataset

#sql #sql-сервер #хранимые процедуры #набор данных

Вопрос:

У меня есть хранимая процедура «Old», возвращающая 3 таблицы, где первые две таблицы возвращают одну строку типа XML, а третья таблица возвращает n строк типа даты.

Теперь я выполняю «Старую» хранимую процедуру в «Новой» хранимой процедуре и хочу сохранить 3 значения набора результатов, возвращенные ею в «Новой» хранимой процедуре.

Старый SP:

 Select * from Table1  Select * from Table2 Select * from Table3  

Новый SP :

 EXEC Old  

Кроме того, я не хочу объединять эти 3 таблицы в одну в «Старой» хранимой процедуре, а затем возвращать ее в «Новую» хранимую процедуру.

Комментарии:

1. Удивительно, но у самого T-SQL нет никаких средств для обработки нескольких наборов результатов из хранимой процедуры. Единственный известный мне способ-использовать C# с ADO.NET — в ADO.NET SqlCommand может возвращать и правильно обрабатывать несколько наборов результатов

2. Вы можете создать #временные таблицы в своем новом proc, к которым Старый proc может получить доступ и вставить результаты, тогда у вас будут доступные данные.

3. Как упоминал @marc_s, вам, вероятно, лучше сделать это с помощью слоя кода (C# или любого другого). У вас также есть следующие варианты ( хотя это не лучший способ ) 1. Создайте новый «Старый» SP, который объединит их ( замените этот «Старый» SP ). 2. Передайте дополнительный параметр «Старый», на основе которого возвращается/возвращается либо таблица 1, 2, 3, либо все.

4. Я бы посоветовал вам просто скопировать и вставить код из OldSP