【问题标题】:How do i insert or update a record based on data whicha has a apostohphe in a dynamic sql?我如何根据动态 sql 中带有撇号的数据插入或更新记录?
【发布时间】:2022-11-28 14:50:05
【问题描述】:

这里 @Data 的值带有 apostrophe(')s 。我如何根据动态 sql 中带有撇号的数据值更新或插入数据

假设@data 有一个值 abc 和另一个值 abc,它会为第二个值抛出错误

SET @SQL = ' Update '+ @ProcessCode + '_abc SET IS_IGNORING = 1 where Column_Name = '''+ @Column_Name +''' and [DATA] = ''' + @Data + ''' and Table_name = '''+ @Table_Name + ''''

一般来说,我发现是一个手动添加一个撇号的过程,但我不确定如何在动态 sql 中使用它,因为表中的所有数据都不相同,很少有数据记录有这种类型的撇号(' )

【问题讨论】:

  • 使用sp_executesql并将值作为参数传递
  • 你能给我一个演示以便更好地理解@Squirrel吗

标签: sql-server


【解决方案1】:

使用 sp_executesql 参数化您的查询

例子:

SET @SQL = 'Update ' + @ProcessCode + '_abc ' 
         + 'SET   IS_IGNORING = 1 ' 
         + 'where Column_Name = @Column_Name ' 
         + 'and   [DATA]      = @Data ' 
         + 'and   Table_name  = @Table_Name ' 

EXEC sp_executesql @SQL, 
                   N'@Column_Name varchar(100), @Data varchar(100), @Table_Name varchar(100)',
                   @Column_Name, @Data, @Table_Name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2016-04-16
    • 2017-01-30
    • 1970-01-01
    • 2015-10-13
    • 2021-03-10
    • 1970-01-01
    相关资源
    最近更新 更多