alter  proc test
@xmlDocument varchar(8000) -- or xml type
as
declare @docHandle int
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlDocument--创建一个xml名柄
-- Use OPENXML to provide rowset consisting of customer data.
SELECT * 
FROM OPENXML(@docHandle, N'/ROOT/Orders')  WITH  #Customers
EXEC sp_xml_removedocument @docHandle alter proc test2
@pp int
as 
CREATE  TABLE  #table_name1(CustomerID char(20),OrderDate datetime)
select * from (
exec  test '<ROOT>  <Orders CustomerID="XYZAA2" OrderDate="2000-08-25T00:00:00"/>  <Orders CustomerID="XYZAA" OrderDate="2000-10-03T00:00:00"/>  </ROOT>') as TTabletest2调用test提示"在关键字 'exec' 附近有语法错误"

解决方案 »

  1.   


    alter  proc test 
    @xmlDocument varchar(8000) -- or xml type 
    as 
       declare @docHandle int 
       EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlDocument--创建一个xml名柄 
        -- Use OPENXML to provide rowset consisting of customer data. 
       SELECT * 
       FROM OPENXML(@docHandle, N'/ROOT/Orders')  WITH  
         ( 
          CustomerID char(20),
          OrderDate datetime
         )
       EXEC sp_xml_removedocument @docHandle 
    alter proc test2 
    @pp int 
    as 
       CREATE  TABLE  #table_name1(CustomerID char(20),OrderDate datetime) 
       INSERT INTO #table_name1
       exec  test ' <ROOT>  <Orders CustomerID="XYZAA2" OrderDate="2000-08-25T00:00:00"/>  <Orders CustomerID="XYZAA" OrderDate="2000-10-03T00:00:00"/>  </ROOT>'
      

  2.   

    我在实现的效果
    在数据库里有一个xml格式的字段.我想用test查询是否与条件相匹配,用test2做判断
    比如orders表
    字段 xmlfile 
    值1: <ROOT><Orders CustomerID="B2" OrderDate="2000-08-24"/> </ROOT>
    值2: <ROOT><Orders CustomerID="B1" OrderDate="2000-08-25"/> </ROOT>
    值3: <ROOT><Orders CustomerID="B2" OrderDate="2000-08-25"/> </ROOT>
    ...........
    要查出CustomerID="B2" OrderDate="2000-08-24"相匹配的
    如何遍历数据库所有xmlfile这个字段,再把xmlfile的值传给test2做判断,返回一个判断值