我想在动态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