【问题标题】:Set parameter inside SQL server execute command在 SQL Server 执行命令中设置参数
【发布时间】:2021-11-20 16:03:50
【问题描述】:

我想使用执行命令将值分配给 if-else 条件内的参数 PRGMREFID。每次我尝试这样做时,它都会显示分配给 PRGMREFID 参数的 NULL 值,如果我将其声明命令放在 SEt @C 中,我在 if-else 之外找不到参数 PRGMREFID。如何做到这一点请帮助。

下面是补丁。

DECLARE @C VARCHAR(MAX)
DECLARE @PRGMREFID VARCHAR(10)

IF 1=1
SET @C = 'set '+ (@PRGMREFID) +' = ''X''  '
else
set @c = ''

EXECUTE(@C)
select @PRGMREFID

【问题讨论】:

    标签: sql if-statement dynamic parameters execute


    【解决方案1】:

    要执行您想要执行的操作,您需要使用 sp_executesql 并将参数定义为 output parameter 以便将值返回到会话的局部变量:

    DECLARE @C NVARCHAR(MAX)
    DECLARE @PRGMREFID VARCHAR(10)
    
    if 1=1
      set @C = 'set @PRGMREFID = ''X'' '
    else
      set @C = ''
    
    exec sp_executesql @C, N'@PRGMREFID VARCHAR(10) output', @PRGMREFID output
    
    select @PRGMREFID
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多