经常想用数据集合的参数给存储过程处理,但是SQL server 却没有提供这样地服务。
oracle好像有,这就是差距~~~
没办法谁让人家SQL server也这么的常用来。
虽然SQL server 没有明显的给出一个数据集合的参数,但是我们可以运用它的一些功能,来实现一下。
XML恩~对就是它,现在很流行的传输格式。
其实SQL server里面已经集成了读取XML 的功能。
我们可以运用这样的一个特性,来模拟的传入一个集合参数。就是一个XML格式。
举个例子:
DECLARE @sql varchar(2000) --这里看成一个从存储过程传进来的参数
DECLARE @idoc int
SET @sql = '
<root>
<student name=''Tom'' age=''21'' />
<student name=''Jerry'' age=''22'' />
<student name=''Join'' age=''23'' />
</root>
'
EXEC sp_xml_preparedocument @idoc OUTPUT,@sql --创建XML 句柄??
-- 查询结果
SELECT * FROM OPENXML (@idoc,'/root/student',1)
WITH (name varchar(10),
age int)
EXEC sp_xml_removedocument @idoc --清理一下内存
最后结果
name age
Tom 21
Jerry 22
Join 23
不过这样是有些缺点的,这里的参数最长长度是8000 ,也就是说超过八千的长度就可能会出错。
PS:看到别人发代码那种是怎么发的??不会~~