我正在从带有撇号的表中读取一个值,我用它来创建一个动态查询,而不是运行一个sp将它保存在另一个表中,它在没有撇号的情况下正常工作但在包含撇号时抛出错误。
从Mytable中选择@arguments =参数
e.g。 设置@sql ='exec nameOfSP'+ @arguments
@arguments值来自数据库
@argument sample value'612f0','这是一个示例第二个字符串'
是的我知道并且同意这是非常糟糕的代码味道,因此问题不是关于设计(遗憾的是无法改变),而是关于当前场景中最好的解决方案。
我正在寻找带编码的解决方案吗?
答案 0 :(得分:0)
“问题不是关于设计(不幸的是无法改变)”似乎有人冒着节省设计的风险,这将花费很多......如果你真的必须使用这样的动态sql你可以使用'to''替换(这是正确的,只需加倍)
但是,我必须说这不是解决问题的方法,只是一种解决方法。
你应该尽一切可能改变设计。
答案 1 :(得分:0)
如果你的论证中有可能引用一个这样的话:
set @sql = 'exec nameOfSP ' + REPLACE(@arguments, '''', '''''');