小编工作不到三个月,最近在项目中遇到了很多的问题,有的问题把我搞的头都大了。但是在小编的不懈的努力下,最终还是把问题解决了。好了不扯淡了,回到主题。
最近我在做一个网页,做的时候感觉很简单,但是在做的过程中却遇到了很多意想不到的问题。打个比方,我们在插入数据的时候,通常的想法是。不管有多少的数据,我们用for循环去遍历,最终把数据插入到数据库里面(在这里用的是存储过程)。但是这样会有很多的问题,比如说性能问题,这样会影响网页的运行速度。
我当时就在想,为什么不能把这些数据拿出来,一次性都插入呢?我试了很多中方法,最中都以失败而告终。最后在同事的帮助下,我终于完成了这个让我蛋碎人亡的功能。
在这里先说说我的想法,然后在给大家把例子放在这里,我会更具例子给大家详细的解说。第一:我们把需要插入的数据一次性都拿到手,把他们拼写成一个XML格式的字符串(这一步比较简单)。第二:这也是最难的一步,那就是写存储过程,怎么才能让他去解析这个XML字符串呢?因为上面的拼接字符串比较简单,我就不在这里浪费大家的时间了。现在我只给大家讲一下存储过程。
CREATE PROC 存储过程命
@stringXML ntext
as
declare @Countrycode int
exec sp_xml_preparedocument @Countrycode OUTPUT,@stringXML
insert into 表名(country)
select country
from openxml(@Countrycode,'Root/Row',1)
with(country,varchar(20))
go
接下来小编说几个比较难理解的地方。第一步我在前台拼写成的XML字符窜如下‘<Root><Row country="SG"/><Row country="JP"/><Row country="EG"/><Row country="RT"/></Root>’其中declare @Countrycode int就是一个句柄,exec sp_xml_preparedocument @Countrycode OUTPUT,@stringXML这句话的作用就是去解析这段XML字符串。那么不难看出openxml(@Countrycode,'Root/Row',1)就是执行这个被解析以后的XML。
其实原理很简单,就是把我们拿到的存储过程,解析成一个table,然后把这个Table中的数据,对应的插入到你的目标表中。
小编只是一个菜鸟,如果有什么地方不对,或者是有什么简单的方法,希望大神们能给贴出来,以供大家参考和学习,小编不胜感激。
最近我在做一个网页,做的时候感觉很简单,但是在做的过程中却遇到了很多意想不到的问题。打个比方,我们在插入数据的时候,通常的想法是。不管有多少的数据,我们用for循环去遍历,最终把数据插入到数据库里面(在这里用的是存储过程)。但是这样会有很多的问题,比如说性能问题,这样会影响网页的运行速度。
我当时就在想,为什么不能把这些数据拿出来,一次性都插入呢?我试了很多中方法,最中都以失败而告终。最后在同事的帮助下,我终于完成了这个让我蛋碎人亡的功能。
在这里先说说我的想法,然后在给大家把例子放在这里,我会更具例子给大家详细的解说。第一:我们把需要插入的数据一次性都拿到手,把他们拼写成一个XML格式的字符串(这一步比较简单)。第二:这也是最难的一步,那就是写存储过程,怎么才能让他去解析这个XML字符串呢?因为上面的拼接字符串比较简单,我就不在这里浪费大家的时间了。现在我只给大家讲一下存储过程。
CREATE PROC 存储过程命
@stringXML ntext
as
declare @Countrycode int
exec sp_xml_preparedocument @Countrycode OUTPUT,@stringXML
insert into 表名(country)
select country
from openxml(@Countrycode,'Root/Row',1)
with(country,varchar(20))
go
接下来小编说几个比较难理解的地方。第一步我在前台拼写成的XML字符窜如下‘<Root><Row country="SG"/><Row country="JP"/><Row country="EG"/><Row country="RT"/></Root>’其中declare @Countrycode int就是一个句柄,exec sp_xml_preparedocument @Countrycode OUTPUT,@stringXML这句话的作用就是去解析这段XML字符串。那么不难看出openxml(@Countrycode,'Root/Row',1)就是执行这个被解析以后的XML。
其实原理很简单,就是把我们拿到的存储过程,解析成一个table,然后把这个Table中的数据,对应的插入到你的目标表中。
小编只是一个菜鸟,如果有什么地方不对,或者是有什么简单的方法,希望大神们能给贴出来,以供大家参考和学习,小编不胜感激。