0

次の手順があります。

ALTER PROCEDURE [dbo].[UpdateAllClients]
    @ClientIDs varchar(max)
AS
BEGIN
    SET NOCOUNT ON
    DECLARE @vSQL varchar(max)
    SET @vSQL = 'UPDATE Clients SET LastOnline=GETDATE() WHERE ClientID IN (' + @ClientIDs  + ')';
    EXEC(@vSQL);
END

@ClientIDs には多くのクライアント ID の配列が含まれています。Clients テーブルの別のフィールドを更新したいので、クエリを次のようにします。

UPDATE Clients SET LastOnline=GETDATE(), Status='Open' WHERE ClientID IN (@ClientIDs)

問題は、@vSQL 変数内に引用符を入れることができることです。

「、Status = 'Open'」をクエリに追加するにはどうすればよいですか?

4

2 に答える 2

4

2つの引用符を使用します。

SET @vSQL = 'UPDATE Clients SET LastOnline=GETDATE(), Status=''Open'' WHERE ClientID IN (' + @ClientIDs  + ')';
于 2012-10-01T09:49:23.553 に答える
2

クライアント ID を文字列ではなく、テーブル値のパラメーターとして渡すことをお勧めします。そうすれば、動的 SQL の代わりに SQL を書くことができます。

于 2012-10-01T09:54:38.333 に答える