4 xml stored-procedures sql-server-2008-r2
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
</catalog>
Run Code Online (Sandbox Code Playgroud)
我有上面的xml文件。
在我的SQL Server 2008数据库有表Book__Master中的所有列都相同上述xml文件的元素,即有像列bookid,author,title等。
现在我想编写一个存储过程,它接受这个 xml 文件作为输入参数,并将元素的值按原样存储在它们各自的列中。
任何人都可以帮助我如何编写这种类型的存储过程?
您可以为此使用 X-Query:
MS SQL Server 2008 架构设置:
CREATE PROCEDURE dbo.ParseXML
@XML XML
AS
BEGIN
SELECT
Book.value('@id','NVARCHAR(100)') AS id,
Book.value('author[1]','NVARCHAR(100)') AS author,
Book.value('title[1]','NVARCHAR(100)') AS title,
Book.value('price[1]','DECIMAL(10,4)') AS price,
Book.value('publish_date[1]','DATE') AS publish_date
FROM @XML.nodes('catalog/book')Catalog(Book)
RETURN;
END;
Run Code Online (Sandbox Code Playgroud)
查询 1:
DECLARE @FileXML XML = '<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer''s Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
</catalog>';
EXEC dbo.ParseXML @FileXML;
Run Code Online (Sandbox Code Playgroud)
结果:
| ID | AUTHOR | TITLE | PRICE | PUBLISH_DATE |
|-------|----------------------|-----------------------|-------|--------------|
| bk101 | Gambardella, Matthew | XML Developer's Guide | 44.95 | 2000-10-01 |
| bk102 | Ralls, Kim | Midnight Rain | 5.95 | 2000-12-16 |
Run Code Online (Sandbox Code Playgroud)
这将向您展示如何获取值。从那里您可以轻松地将它们插入到您的表中。