動的SQL文の列名の一部として変数を使用しようとしています。動的SQLの列名の一部として変数を使用
私はPlayer1Action
,Player2Action
,Player3Action
およびPlayer4Action
と呼ばれる4つの列を持っています。
可能性のある@CurrentPlayerId
に応じて、関連するプレーヤーの列をいくつかのデータで更新したいと考えています。
たとえば、CurrentPlayerIdに1
が含まれている場合は、列Player1Action
を更新します。
私はこれを一連のIF文で実現できることを認識していますが、よりクリーンな方法でやりたいと思います。
私は次のコードを持っていますが、私はエスケープして問題を引き起こしていると思います。私はこれをビュータイムに書き直しましたが、私はそれを動作させることができないようです。
DECLARE
@CurrentPlayerId INT,
@CurrentPlayerBetAmount nvarchar(MAX),
@stmt nvarchar(MAX);
SET @CurrentPlayerId = 1
SET @CurrentPlayerBetAmount = 100
SET @stmt = N'UPDATE HandCurrent SET ''Player'' ''+'' @CurrentPlayerId ''+'' ''Action'' = 1 '','' ''Player'' ''+'' @CurrentPlayerId ''+'' ''ActionSize'' = @CurrentPlayerBetAmount'
EXECUTE sp_executesql @stmt
これを選択として実行すると、次の結果が返されます。
UPDATE HandCurrent SET 'Player' '+' @CurrentPlayerId '+' 'Action' = 1 ',' 'Player' '+' @CurrentPlayerId '+' 'ActionSize' = @CurrentPlayerBetAmount
あなたがしているRDBMSとの質問にタグを付けてください。 – Kacper
を使用してなぜ結果sqlを見るために 'SELECT @ stmt'をしないのですか? –
@Kacper done、thanks! – AntonZ