代码如下:
declare @intDoc int --保存加载文档的句柄
declare @xmlContent varchar(max) --将要加载的xml内容
print(len(@xmlContent))
set @xmlContent='<persons><person name="luisan" sex="man" address="shannxibaoji"></person><person name="luisan" sex="man" address="shannxibaoji"></person><person name="luisan" sex="man" address="shannxibaoji"></person><person name="wanghong" sex="man" address="shannxibaoji"></person><person name="wanghong" sex="man" address="shannxibaoji"></person></persons>'
print(@xmlContent)
exec sp_xml_preparedocument @intDoc output,@xmlContent --将xml的内容加载到内存中
select * from
openxml(@intDoc,'persons/person')
with([name] varchar(10) '@name',[sex] char(3) '@sex',[address] char(20) '@address')--这块with貌似是将结果集重新整合成一个新表展示??
exec sp_xml_removedocument @intDoc --将处理过得xml从内存中删除
openxml()方法可不可以打开一个*.xml文件,网上给的例子都是讲xml格式的字符串的读取
with 这个地方 是定义了一个 结果集的结构(SchemaDeclaration),就是这段 XML 在 SQL SERVER 的数据结构和展示存储。
另外:[name] varchar(10) '@name', 这个写法 有问题吧,'@name' 这个不应该出现在 with 中出现的吧?
这个是书上的例子,可以调试通过的