日期:2014-05-18  浏览次数:20530 次

关于exec 执行时的特殊字符问题,高手请进!!!
表:
CREATE   TABLE   [dbo].[p_group_prv]   (
[groupid]   [varchar]   (32)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   ,
[privilege]   [varchar]   (32)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL  
)   ON   [PRIMARY]


存储过程:
create   proc   addinfo  

@@aa   varchar(20)
@@bb   varchar(20)

as

declare   @tablename   varchar(20)

set   @tablename= 'p_group_prv '

exec( '   insert   into     '+@tablename+ '   values( ' ' '+@aa+ ' ' ', ' ' '+@bb+ ' ' ') ')

go


我在应用程序里调用该存储过程一般情况下没有问题   ,但如果传给存储过程的两个参数里含有   '   时就会出错,请问如何解决

------解决方案--------------------
可以替换一下先,将一个 '变成两个 ' '

set @aa = replace(@aa, ' ' ' ', ' ' ' ' ' ')
------解决方案--------------------
可是我不知道是否只有 ' 这个特殊字符时会报错,有没有一个公用的方法能把所有的特殊字符格式化

---------------------------

只有这个字符( ')会报错,这是SQL里字符串的界定符,只能成对出现,写字符串时,如果字符串出现的( '),要用两个( ')表示,可以理解第一个( ')为转义符,例如:
print 'Let ' 's go '