如何在SqlServer中的另一个过程中使用过程的结果

时间:2011-04-05 11:57:38

标签: sql-server tsql procedure

我正在尝试将结果与一些“选择”相结合 我想将@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 :(得分:0)

您无法通过附加一个过程来插入一个过程的结果。 我现在假设[proc_Get_Frame_CourseNum]返回标量结果。

所以在另一行批处理中运行exec [proc_Get_Frame_CourseNum] @temp(在设置@result = @result + call之前)

您的查询应该如下,

  
    

声明@scalarResult = exec [proc_Get_Frame_CourseNum] @temp
    设置@ result = @ result + @scalarResult

  

答案 1 :(得分:0)

就个人而言,我会使用输出变量

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变量中。