<?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>
上記の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;
クエリ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;
結果:
| 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 |
これは、値に到達する方法を示しています。そこから簡単にテーブルに挿入できます。