关于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 '