1

結果をいくつかの s と混ぜ合わせようとしていSELECTます。手順の結果と合わせ
て設定したかったのですがうまくいきませんでした。@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

1 つのプロシージャの結果を追加して補間することはできません。私は今、それ[proc_Get_Frame_CourseNum]がスカラー結果を返すと仮定しています。

したがってexec [proc_Get_Frame_CourseNum] @temp、バッチの別の行で実行します(set @result = @result + callの前)

クエリは次のようになります。

宣言 @scalarResult = exec [proc_Get_Frame_CourseNum] @temp
セット @result=@result+ @scalarResult

于 2011-04-05T12:05:02.780 に答える