Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: CL | DM;

Вниз

Вызов хранимой процедуры из другой хранимой процедуры   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.038 c
14-1107779407
Sandman25
2005-02-07 15:30
2005.02.27
Исключенное третье


11-1092328525
OSokin
2004-08-12 20:35
2005.02.27
Правка


1-1108321496
Вовик
2005-02-13 22:04
2005.02.27
Как мне узнать над каким объектом выскочило PopupMenu?


1-1107957477
Vaitek
2005-02-09 16:57
2005.02.27
Точность/погрешность вычеслений.


14-1107959128
juice
2005-02-09 17:25
2005.02.27
хороший форум