2011-04-05 57 views
1

我試圖用
我想成立@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 

回答

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變量。

+0

非常感謝你,下一次我會帶你到我的學校的咖啡廳^ _ ^ – Lanston 2011-04-05 13:50:58

0

你不能通過追加插入一個過程的結果。 我現在假設[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

相關問題