Sql server sql xml顺序处理器

Sql server sql xml顺序处理器,sql-server,sql-server-2005,xquery-sql,Sql Server,Sql Server 2005,Xquery Sql,我想知道是否有人可以给我指一个教程,或者给我一些关于处理XML“requestforquote”文档的建议。使用SQLServer2005。例如: <MyQuote> <Header> <Customer>XYZ</Customer> <Material>Wood&</Material> <Header> <LineItems> <Line>

我想知道是否有人可以给我指一个教程,或者给我一些关于处理XML“requestforquote”文档的建议。使用SQLServer2005。例如:

<MyQuote>  
<Header>  
  <Customer>XYZ</Customer>  
  <Material>Wood&</Material>  
<Header>  
<LineItems>  
<Line>  
   <Quantity>32</Quantity>  
   <Model>Chair 350</Model>  
   <Color>Red</Color>    
 </Line>  
  .   
</LineItems>  
</MyQuote>

XYZ
木材及
32
主席350
红色
.   
只是用XQuery弄湿了我的脚。我需要将此文档分解为单独的行项目,用数字标识每个项目,验证它们并计算价格。还需要能够添加/编辑/删除任何一个。我可以看到如何将这些行放入表中,但看不到如何用序列号标识它们并对它们应用存储过程。我需要能够随机处理任何请求,例如
验证第6行
计算第3行的价格
删除第4行
将第2行更改为黄色
,等等

我假设最好的方法是将整个文档存储为XML列并对其进行处理,而不是将单个行项目分解并存储在关系表中

任何建议、代码、URL等都将不胜感激

我想知道是否有人能给我指点一个教程或者给我一些建议 关于处理XML“报价请求”文档的建议。使用 SQL Server 2005

以下是一些有用的页面:

我需要将此文档拆分为单独的行项目

这将为您提供所有行:

select 
  T.N.value('Quantity[1]', 'int') as Quantity,
  T.N.value('Model[1]', 'varchar(25)')    as Model,
  T.N.value('Color[1]', 'varchar(25)')    as Color
from @XML.nodes('/MyQuote/LineItems/Line') as T(N)
每个都有一个数字

不那么容易。看看这个答案

还需要能够添加/编辑/删除任何一个

只用

要获得第6行,您应该:

select 
  T.N.value('Quantity[1]', 'int') as Quantity,
  T.N.value('Model[1]', 'varchar(25)')    as Model,
  T.N.value('Color[1]', 'varchar(25)')    as Color
from @XML.nodes('/MyQuote/LineItems/Line[6]') as T(N)
/MyQuote/LineItems/Line[6]
/MyQuote/LineItems/Line[position()=6]

我假设最好的方法是将整个文档存储为XML 列并对其进行处理,而不是分解和存储 关系表中的单个行项目

我不知道什么最适合你,但我肯定会将数据分解到表中,除非有一些非常令人信服的理由不这样做

我想知道是否有人能给我指点一个教程或者给我一些建议 关于处理XML“报价请求”文档的建议。使用 SQL Server 2005

以下是一些有用的页面:

我需要将此文档拆分为单独的行项目

这将为您提供所有行:

select 
  T.N.value('Quantity[1]', 'int') as Quantity,
  T.N.value('Model[1]', 'varchar(25)')    as Model,
  T.N.value('Color[1]', 'varchar(25)')    as Color
from @XML.nodes('/MyQuote/LineItems/Line') as T(N)
每个都有一个数字

不那么容易。看看这个答案

还需要能够添加/编辑/删除任何一个

只用

要获得第6行,您应该:

select 
  T.N.value('Quantity[1]', 'int') as Quantity,
  T.N.value('Model[1]', 'varchar(25)')    as Model,
  T.N.value('Color[1]', 'varchar(25)')    as Color
from @XML.nodes('/MyQuote/LineItems/Line[6]') as T(N)
/MyQuote/LineItems/Line[6]
/MyQuote/LineItems/Line[position()=6]

我假设最好的方法是将整个文档存储为XML 列并对其进行处理,而不是分解和存储 关系表中的单个行项目

我不知道什么最适合你,但我肯定会将数据分解到表中,除非有一些非常令人信服的理由不这样做