Как использовать результат из процедуры в другой процедуре в SqlServer - PullRequest
1 голос
/ 05 апреля 2011

Я пытаюсь объединить результат, смешанный с некоторыми "выборками"Я хотел установить @result в сочетании с результатом процедуры [proc_Get_Frame_CourseNum]но это не сработало, надеюсь, кто-нибудь может мне помочь ^ _ ^

>>declare @str varchar(300)
>>declare @result varchar(200)
>>declare @temp varchar(20)
>>declare @i int
>>set @str='110,120,130,140'
>>set @result=''
>>set @temp=''
>>set @i=0
>>while @i>begin
>>set @temp=substring(@str,1,3)
>>set @str=substring(@str,2,len(@str))
>>set @result=@result+  exec [proc_Get_Frame_CourseNum] @temp 
>>set @i=@i+1
>>end
>>select @temp

Ответы [ 2 ]

0 голосов
/ 05 апреля 2011

Лично я бы использовал выходные переменные

CREATE PROCEDURE proc_Get_Frame_CourseNum
    @temp varchar(20),
    @outValue varchar(50) OUTPUT
AS
BEGIN
    --do stuff

    --before you leave the method or do your final SELECT
    SET @outValue = 'whatever your result is'

    --more stuff
END

Тогда в вашем коде вы просто идете:

DECLARE @outValue VARCHAR(20)

-- rest of your code

EXEC [proc_Get_Frame_CourseNum] @temp, @outValue OUT
SET @result = @result + @outValue

В качестве альтернативы, вы можете просто записать результаты SP в временную таблицу, а затем прочитать ее в вашей переменной @Result.

0 голосов
/ 05 апреля 2011

Вы не можете интерполировать результат одной процедуры, добавляя его.Теперь я предполагаю, что [proc_Get_Frame_CourseNum] возвращает скалярный результат.

Поэтому запустите exec [proc_Get_Frame_CourseNum] @temp в другой строке пакета (перед набором @result = @result + call)

Ваш запрос должен выглядетьнапример,

Declare @scalarResult = exec [proc_Get_Frame_CourseNum] @tempset @ result = @ result + @ scalarResult

...