Форум: "Базы";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизВызов хранимой процедуры из другой хранимой процедуры Найти похожие ветки
← →
MakNik (2005-01-26 00:57) [0]Есть 2 хранимые процедуры:
1-я процедура по заданным параметрам проводит расчет и возвращает n+1 строк…
во 2-й процедуре необходимо обработать результат работы 1-й процедуры…
Подскажите неопытному, пожалуйста, как правильно организовать вызов 1-й процедуры из 2-й?
P.s. Хочется организовать что-то типа:
Proc2
...
Declare @TMPTab Table ....
Insert into @TMPTab
Exec Proc1 Param, Param2
...
← →
Ольга (2005-01-26 07:21) [1]Нет, так нельзя.
В предложении Insert into нельзя использовать Exec.
Но если 1-ю процедуру можно переделать в функцию, то такая конструкция будет работать:
Declare @TMPTab Table ....
Insert into @TMPTab
SELECT * FROM Func1(Param, Param2)
А еще лучше будет использовать для промежуточных расчетов не таблицу а курсор (команда Insert слишком затратная на большой выборке):
DECLARE MyCur CURSOR SCROLL FOR
SELECT * FROM Func1(Param, Param2)
FOR READ ONLY
← →
sniknik © (2005-01-26 08:16) [2]> Нет, так нельзя.
> В предложении Insert into нельзя использовать Exec.
как раз для него сделано исключение (в отличии от select, но и тут можно обойти)
правда не пробовал с переменной табличного типа но во временную (тем более обычную) таблицу все замечательно вставляется такой конструкцией.
INSERT INTO #Table
EXEC Procedure1
← →
Ольга (2005-01-26 08:52) [3]В самом деле во временную таблицу можно писать командой
INSERT INTO #Table EXEC Procedure1,
а тоже самое в переменную типа таблицы нельзя (это для меня не понятно), выдается сообщение:
EXECUTE cannot be used as a source when inserting into a table variable.
← →
Ольга (2005-01-26 09:03) [4]Уже поняла. INSERT INTO предполагает физическую запись, потому временная таблица здесь к месту. А для виртуальной таблицы годится только SELECT.
РЕЗЮМЕ:
Если у вас большая выборка, делайте INSERT INTO @Table SELECT..., если небольшая - любой из предложенных вариантов.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c