Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
4-1105818592
Sphinx
2005-01-15 22:49
2005.02.27
Счетчик запусков программы


4-1105427654
__max__
2005-01-11 10:14
2005.02.27
Как мне узнать ID главного потока процесса с известным PID?


1-1108024408
TVB
2005-02-10 11:33
2005.02.27
Отчеты QPR


1-1108141017
Алексей
2005-02-11 19:56
2005.02.27
Експорт в Ексель


3-1106828927
ViJen
2005-01-27 15:28
2005.02.27
MSSQL - как сохранить картинку в таблицу??





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский