我想在動態SQL語句中使用變量作爲列名的一部分。使用變量作爲動態SQL中列名的一部分
我有4列,稱爲Player1Action
,Player2Action
,Player3Action
和Player4Action
。
取決於變量@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
如果我將它作爲select運行,則返回以下結果。
UPDATE HandCurrent SET 'Player' '+' @CurrentPlayerId '+' 'Action' = 1 ',' 'Player' '+' @CurrentPlayerId '+' 'ActionSize' = @CurrentPlayerBetAmount
請RDBMS疑問句你使用 – Kacper
爲什麼不用'SELECT @ stmt'來查看結果sql? –
@ Kacper完成了,謝謝! – AntonZ