Как получить результат процедуры в переменной T-SQL?
От: Курилка Россия http://kirya.narod.ru/
Дата: 14.02.05 11:03
Оценка:
Собственно сабж — хочется получить то, что выдаёт сохранённая процедура и запихать это дело в локальную переменную скрипта — никак не могу сообразить как это можно сделать в T-SQL.
За любую мысль по повода решения — большие сенки!
Re: Как получить результат процедуры в переменной T-SQL?
От: lazymf Россия  
Дата: 14.02.05 11:08
Оценка: 6 (1)
Здравствуйте, Курилка, Вы писали:

К>Собственно сабж — хочется получить то, что выдаёт сохранённая процедура и запихать это дело в локальную переменную скрипта — никак не могу сообразить как это можно сделать в T-SQL.

К>За любую мысль по повода решения — большие сенки!

Смотря что понимать под "что выдает сохраненная процедура". Если return status то
EXEC @myint = myproc
np: silent
Re: Как получить результат процедуры в переменной T-SQL?
От: Smirnov.Anton Россия  
Дата: 14.02.05 11:09
Оценка:
Здравствуйте, Курилка, Вы писали:
К>Собственно сабж — хочется получить то, что выдаёт сохранённая процедура и запихать это дело в локальную переменную скрипта — никак не могу сообразить как это можно сделать в T-SQL.
К>За любую мысль по повода решения — большие сенки!
create proc p1
(@outparam int OUTPUT)
 set @outparam = 666
go
declare @param int
set @param=111
exec p1 @param OUTPUT
select @param
Re: Как получить результат процедуры в переменной T-SQL?
От: gavrilenko_s  
Дата: 14.02.05 11:11
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Собственно сабж — хочется получить то, что выдаёт сохранённая процедура и запихать это дело в локальную переменную скрипта — никак не могу сообразить как это можно сделать в T-SQL.

К>За любую мысль по повода решения — большие сенки!
Если речь идет именно о переменных, то два пути
1) через возвращаемое значение

create procedure test_ret
as begin
  return 15
end
go
--получение
declare @ret int
exec @ret = test_ret
print @ret

правда так можно вернуть только int
2) через out-параметры

create procedure test_out(
  @par int output
) as begin
  set @par = 15
end
go
declare @val int
exec test_out @val output
print @val
Re[2]: Как получить результат процедуры в переменной T-SQL?
От: Курилка Россия http://kirya.narod.ru/
Дата: 14.02.05 11:30
Оценка:
Здравствуйте, lazymf, Вы писали:

L>Здравствуйте, Курилка, Вы писали:


К>>Собственно сабж — хочется получить то, что выдаёт сохранённая процедура и запихать это дело в локальную переменную скрипта — никак не могу сообразить как это можно сделать в T-SQL.

К>>За любую мысль по повода решения — большие сенки!

L>Смотря что понимать под "что выдает сохраненная процедура". Если return status то

L>
L>EXEC @myint = myproc
L>


Ммм, спасибо, а если возвр. таблицу?
Re[3]: Как получить результат процедуры в переменной T-SQL?
От: Smirnov.Anton Россия  
Дата: 14.02.05 11:38
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Ммм, спасибо, а если возвр. таблицу?

1) не рекомендуется использовать return для возврата чего-либо, акромя статуса выполнения ХП
для других целей лучше(правильнее) использовать OUT паарметр
2) вернуть таблицу из хп можно 2 способами(переменной — вообще нельзя)
— 1 в хп делать select ... — этот набор данных можно потом обрабатывать
(только вызов хп нельзя использовать в запросе, только предварительно скинув результат её работы в табличку )
— 2 сразу в процедуре скидывать результат её работы во временную таблицу
ЗЫ если вам необходимо результирующий рекорсет использовать в запросах то можно посмотреть в сторону UDF(правда там куча своих ограничений)
Re[3]: Как получить результат процедуры в переменной T-SQL?
От: pkarklin  
Дата: 14.02.05 11:38
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Ммм, спасибо, а если возвр. таблицу?



CREATE TABLE #Temp(--по структуре возвращаемого набора
INSERT INTO #Temp
EXEC SomeProc
Re[3]: Как получить результат процедуры в переменной T-SQL?
От: gavrilenko_s  
Дата: 14.02.05 11:39
Оценка: 3 (1)
К>Ммм, спасибо, а если возвр. таблицу?
Тут сложнее. Единственная возможность получить набор, это выполнить

insert into #Временная_таблица_той_же_структуры_что_и_возвращаемый_набор exec YourProc

Таблицу, естественно, перед этим придется создать через create table, например.
Re[4]: Как получить результат процедуры в переменной T-SQL?
От: Smirnov.Anton Россия  
Дата: 14.02.05 11:42
Оценка:
pkarklin,gavrilenko_s,...
тяжко стало на www.sql.ru
Re[5]: Как получить результат процедуры в переменной T-SQL?
От: gavrilenko_s  
Дата: 14.02.05 11:45
Оценка:
Здравствуйте, Smirnov.Anton, Вы писали:

SA>pkarklin,gavrilenko_s,...

SA> тяжко стало на www.sql.ru
да, уж.
З.Ы. Тока тихо, а то за офтопик забанят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.