--不完全明白楼主的意思,是这个吗?--示例
create proc p_test
@xml nvarchar(4000)
as
print @xml
go--调用
exec p_test'
<xml>
    <sqlstring id=1>....</sqlstring>
    <sqlstring id=2>....</sqlstring>
    <sqlstring id=3>....</sqlstring>
    <sqlstring id=4>....</sqlstring>
    <sqlstring id=5>....</sqlstring>
</xml>'

解决方案 »

  1.   

    不是这个意思
    <sqlstring id=1>....</sqlstring>
    里存的是sql语句,比如
    <sqlstring id=1>select * from table1</sqlstring>
    我要做的就是遍历sqlstring,取得每一个sql语句,然后操作。
      

  2.   

    --示例
    create proc p_test
    @xml ntext
    as
    declare @p int,@s nvarchar(4000)EXEC sp_xml_preparedocument @p OUTPUT, @xmldeclare tb cursor local for
    select sql from openxml(@p,'/xml/sqlstring',1) with(id int '@id',sql nvarchar(4000) '.') order by id
    open tb
    fetch tb into @s
    while @@fetch_status=0
    begin
    exec(@s)
    fetch tb into @s
    end
    close tb
    deallocate tb
    go--调用
    exec p_test'
    <xml>
        <sqlstring id="1">select ''1''</sqlstring>
        <sqlstring id="2">select 2</sqlstring>
        <sqlstring id="3">select 3</sqlstring>
        <sqlstring id="4">select 4</sqlstring>
        <sqlstring id="5">select 5</sqlstring>
    </xml>'
    go--删除测试
    drop proc p_test
      

  3.   

    我用了一下,功能可以实现,但有两个地方不太明白
    EXEC sp_xml_preparedocument @p OUTPUT, @xml
    这里是调用什么系统的过程吗?什么意思?declare tb cursor local for
    select sql from openxml(@p,'/xml/sqlstring',1) with(id int '@id',sql nvarchar(4000) '.') order by id
    这句不太明白,id int '@id',sql nvarchar(4000) '.'是什么意思?
    希望高手能帮我解释一下。
      

  4.   

    sp_xml_preparedocument 这是系统存储过程,你可以查联机帮助.
      

  5.   

    openxml的语法联机帮助上也有,而且也有示例,建议楼主先看看