1

我正在尝试将结果与一些SELECTs 混合在一起。
我想@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<len(@str)/4+1
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
4

2 回答 2

2

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

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

于 2011-04-05T12:12:47.680 回答
0

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

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

您的查询应如下所示,

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

于 2011-04-05T12:05:02.780 回答