日期:2014-05-17  浏览次数:20555 次

怎么把XML数据存入数据库
程序前台传过来一个XML的字符串。
我现在存储过程里,要用拼接sql语句的方式,把这个xml数据存入数据库表的某个varchar字段里面。该怎么做?

类似的过程如下

create procedure test 
@XML  varchar(max) ,
@xx varchar(20),
……,
……
as
Declare @sql varchar(max)
set @sql='insert into tb(XX,……,xmls)
select '''+@xx+''','''+……+……''',''','''+@XML+''''
exec(@sq) 



如果这样做的话,由于XML里面可能含有‘,等符号,会导致@sql出错。
如果用把特殊符号转换掉的话,那么如果要转换的地方很多的话,会影响性能

有没有什么好的办法?


------解决方案--------------------


DECLARE @TMPXML VARCHAR(MAX)
SET @TMPXML =replace(@XML,'''','tszf') 

拼接的时候,用@TMPXML 代替@XML。就是单引号出问题。其他的不会。
之后再执行:


UODATE TB SET XML=REPLACE (XML,'tszf','''')