Собственно сабж — хочется получить то, что выдаёт сохранённая процедура и запихать это дело в локальную переменную скрипта — никак не могу сообразить как это можно сделать в T-SQL.
За любую мысль по повода решения — большие сенки!
Re: Как получить результат процедуры в переменной T-SQL?
Здравствуйте, Курилка, Вы писали:
К>Собственно сабж — хочется получить то, что выдаёт сохранённая процедура и запихать это дело в локальную переменную скрипта — никак не могу сообразить как это можно сделать в T-SQL. К>За любую мысль по повода решения — большие сенки!
Смотря что понимать под "что выдает сохраненная процедура". Если return status то
EXEC @myint = myproc
np: silent
Re: Как получить результат процедуры в переменной T-SQL?
Здравствуйте, Курилка, Вы писали: К>Собственно сабж — хочется получить то, что выдаёт сохранённая процедура и запихать это дело в локальную переменную скрипта — никак не могу сообразить как это можно сделать в 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?
Здравствуйте, Курилка, Вы писали:
К>Собственно сабж — хочется получить то, что выдаёт сохранённая процедура и запихать это дело в локальную переменную скрипта — никак не могу сообразить как это можно сделать в 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?
Здравствуйте, lazymf, Вы писали:
L>Здравствуйте, Курилка, Вы писали:
К>>Собственно сабж — хочется получить то, что выдаёт сохранённая процедура и запихать это дело в локальную переменную скрипта — никак не могу сообразить как это можно сделать в T-SQL. К>>За любую мысль по повода решения — большие сенки!
L>Смотря что понимать под "что выдает сохраненная процедура". Если return status то L>
L>EXEC @myint = myproc
L>
Ммм, спасибо, а если возвр. таблицу?
Re[3]: Как получить результат процедуры в переменной T-SQL?
Здравствуйте, Курилка, Вы писали:
К>Ммм, спасибо, а если возвр. таблицу?
1) не рекомендуется использовать return для возврата чего-либо, акромя статуса выполнения ХП
для других целей лучше(правильнее) использовать OUT паарметр
2) вернуть таблицу из хп можно 2 способами(переменной — вообще нельзя)
— 1 в хп делать select ... — этот набор данных можно потом обрабатывать
(только вызов хп нельзя использовать в запросе, только предварительно скинув результат её работы в табличку )
— 2 сразу в процедуре скидывать результат её работы во временную таблицу
ЗЫ если вам необходимо результирующий рекорсет использовать в запросах то можно посмотреть в сторону UDF(правда там куча своих ограничений)
Re[3]: Как получить результат процедуры в переменной T-SQL?