Главная страница
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.062 c
3-1106847154
Fedor
2005-01-27 20:32
2005.02.27
Подсчет количества записей в таблице


3-1106800214
UVV
2005-01-27 07:30
2005.02.27
Запрос с параметром timestamp


4-1105438203
Ученик
2005-01-11 13:10
2005.02.27
Иконки в ListView


1-1108234685
Flext@r
2005-02-12 21:58
2005.02.27
Архивация данных в Delphi


4-1105700892
Net
2005-01-14 14:08
2005.02.27
Свернуть приложение...