通过 sql 查询读取 xml
Read xml through sql query
我已将 xml 字符串传递给存储过程,需要将 xml 值插入 sql 数据库 table。下面是脚本
Declare @tab1 table(id int , name varchar(20),Salary int)
declare @xml xml
set @xml = '<Models>
<Model_Id ID="54">
<Data>
<Name>Nandani</Name>
<Salary>1000</Salary>
</Data>
<Data>
<Name>Amit</Name>
<Salary>5000</Salary>
</Data>
</Model_Id>
<Model_Id ID="55">
<Data>
<Name>Pankaj</Name>
<Salary>2000</Salary>
</Data>
</Model_Id>
</Models>'
insert into @tab1(id, name, Salary)
SELECT
doc.col.value('(Model_Id/@ID)[1]', 'INT'),
doc.col.value('(Model_Id/Data/Name)[1]', 'VARCHAR(20)'),
doc.col.value('(Model_Id/Data/Salary)[1]','Varchar(50)')
但是它只是在table中插入了一条记录,但是table中应该有3条记录。请帮我解决这个问题。
试试这个:
INSERT INTO @tab1(id, name, Salary)
SELECT
xc.value('(../@ID)[1]', 'INT'),
xc.value('(Name)[1]', 'VARCHAR(20)'),
xc.value('(Salary)[1]','Varchar(50)')
FROM
@xml.nodes('/Models//Model_Id//Data') AS XT(XC)
通过调用 .nodes()
,您将返回 "pseudo" table 个 XML 片段,每个 XML 元素一个由 XPath 表达式指定。然后,您将 .value()
调用应用于每个 XML 片段以提取单个属性和元素值。
我已将 xml 字符串传递给存储过程,需要将 xml 值插入 sql 数据库 table。下面是脚本
Declare @tab1 table(id int , name varchar(20),Salary int)
declare @xml xml
set @xml = '<Models>
<Model_Id ID="54">
<Data>
<Name>Nandani</Name>
<Salary>1000</Salary>
</Data>
<Data>
<Name>Amit</Name>
<Salary>5000</Salary>
</Data>
</Model_Id>
<Model_Id ID="55">
<Data>
<Name>Pankaj</Name>
<Salary>2000</Salary>
</Data>
</Model_Id>
</Models>'
insert into @tab1(id, name, Salary)
SELECT
doc.col.value('(Model_Id/@ID)[1]', 'INT'),
doc.col.value('(Model_Id/Data/Name)[1]', 'VARCHAR(20)'),
doc.col.value('(Model_Id/Data/Salary)[1]','Varchar(50)')
但是它只是在table中插入了一条记录,但是table中应该有3条记录。请帮我解决这个问题。
试试这个:
INSERT INTO @tab1(id, name, Salary)
SELECT
xc.value('(../@ID)[1]', 'INT'),
xc.value('(Name)[1]', 'VARCHAR(20)'),
xc.value('(Salary)[1]','Varchar(50)')
FROM
@xml.nodes('/Models//Model_Id//Data') AS XT(XC)
通过调用 .nodes()
,您将返回 "pseudo" table 个 XML 片段,每个 XML 元素一个由 XPath 表达式指定。然后,您将 .value()
调用应用于每个 XML 片段以提取单个属性和元素值。