Главная страница
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.03 c
1-1108144299
Gear
2005-02-11 20:51
2005.02.27
Как правильно удалить родной Indy из Delphi 7?


4-1105742411
niki
2005-01-15 01:40
2005.02.27
Мерцание картинки


1-1108477450
Pyro Sun
2005-02-15 17:24
2005.02.27
Различия Delphi Personal и Professional


14-1107512516
boriskb
2005-02-04 13:21
2005.02.27
Кто/что вас сделало?


1-1108069859
iCe
2005-02-11 00:10
2005.02.27
Цикл ожидания