0

私は変数を使用してカウントを格納しており、ストアド プロシージャを何度も起動しようとしており、毎回数を繰り返しています。ただし、使用する必要がある構文に問題があります。これが私がこれまでに持っているものです:

declare @count INT
declare @total INT
declare @p1 nvarchar(255)

set @count = 1
set @total = 50
    if @count <= @total
    begin
        set @p1=NULL
        exec USP_DATAFORM_ADDNEW_b9c5ae3e_1e40_4e33_9682_18fb0bb40ff2 @ID=@p1 output,@ROLENAME='Load Test Role ' + @count,@DESCRIPTION=N'Role used for automated load test.',@COPYUSERS=0,@CHANGEAGENTID='023C133B-D753-41E9-BCC6-1E33A4ACD600',@SYSTEMROLEID=N'3a33d7a7-c3b3-4a34-a4d7-99ef1af78fb8'
        select @p1
        set @count = @count + 1
    end

問題はその@ROLENAME='Load Test Role ' + @count部分です。使用する正しい構文は何ですか? ここで動的 SQL を使用し、すべてを exec_sql ステートメントで定義する必要がありますか?

参考までに、私は SQL Server 2008 R2 を使用しています。私が得るエラーはですIncorrect syntax near '+'

4

2 に答える 2

1

コード内で反復しないのはなぜですか?もっと簡単かもしれません。

declare @count INT = 1,
        @total INT = 50,
        @p1 nvarchar(255)

    while @count <= @total
    begin
        set @p1=NULL
        exec USP_DATAFORM_ADDNEW_b9c5ae3e_1e40_4e33_9682_18fb0bb40ff2 @ID=@p1 output,@ROLENAME='Load Test Role ' + @count,@DESCRIPTION=N'Role used for automated load test.',@COPYUSERS=0,@CHANGEAGENTID='023C133B-D753-41E9-BCC6-1E33A4ACD600',@SYSTEMROLEID=N'3a33d7a7-c3b3-4a34-a4d7-99ef1af78fb8'
        select @p1
        set @count = @count + CAST(@count AS varchar(2))
    end
于 2013-10-04T12:56:38.373 に答える