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

问题描述:

我试图用
我想成立@result与[proc_Get_Frame_CourseNum]结果合并一些“选择”混合的结果相结合的过程
但它没有工作,希望有人能帮助我^ _^如何在SqlServer的使用结果从一个过程在另一个过程

 
>>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 @[email protected]+ exec [proc_Get_Frame_CourseNum] @temp 
>>set @[email protected]+1 
>>end 
>>select @temp 

就个人而言,我会充分利用输出变量的

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

非常感谢你,下一次我会带你到我的学校的咖啡厅^ _ ^ – Lanston 2011-04-05 13:50:58

你不能通过追加插入一个过程的结果。 我现在假设[proc_Get_Frame_CourseNum]返回一个标量结果。

所以在批量的另一行(之前设置@result = @result +电话)运行exec [proc_Get_Frame_CourseNum] @temp

您的查询应该是什么样子,

声明@scalarResult = EXEC [proc_Get_Frame_CourseNum] // @临时
组@结果= @结果+ @scalarResult

+1

'exec'的值是过程的返回代码(int类型)。这只会在'proc_Get_Frame_CourseNum'返回使用'return'语句的结果(它是一个int)时才起作用。如果它目前正在返回,例如包含标量值的单个行/列值,此方法不起作用。 – 2011-04-05 12:19:02

+0

似乎不工作... – Lanston 2011-04-05 13:49:40