sql:overflow-field を使用した、未使用データの取得 (XDR スキーマ)
重要 : |
---|
このトピックは、レガシ アプリケーションの参照用として用意されています。この機能は今後更新されません。新しい開発作業では、この機能の使用を避け、注釈付き XSD スキーマを使用して XML ビューを作成してください。詳細については、「注釈付き XSD スキーマの概要 (SQLXML 4.0)」を参照してください。既存の注釈付き XDR スキーマは、XSD スキーマに変換できます。詳細については、「注釈付き XDR スキーマから同等の XSD スキーマへの変換 (SQLXML 4.0)」を参照してください。 |
OPENXML を使用して XML ドキュメントからデータベースにレコードを追加するときには、ソース XML ドキュメントのすべての未使用データを 1 つの列に格納することができます。注釈付きスキーマを使用してデータベースからデータを取得するときに、オーバーフロー データを格納するテーブルの列を指定するには、sql:overflow-field 属性を指定します。
データは次のように取得されます。
- オーバーフロー列に格納された属性が、sql:overflow-field 注釈を含む要素に追加されます。
- データベースのオーバーフロー列に格納されているサブ要素とその子孫が、スキーマに明示的に指定されているコンテンツの後にサブ要素として追加されます。このとき、順序は保持されません。
例
次の例を使用した実際のサンプルを作成するには、特定の条件を満たす必要があります。詳細については、「SQLXML のサンプル実行のための必要条件」を参照してください。
A. XDR スキーマの <ElementType> に sql:overflow-field を指定する
この例では、このテーブルが tempdb データベースに存在するものとします。
USE tempdb
CREATE TABLE Customers2 (
CustomerID VARCHAR(10),
ContactName VARCHAR(30),
AddressOverflow NVARCHAR(500))
GO
INSERT INTO Customers2 VALUES (
'ALFKI',
'Joe',
'<Address>
<Address1>Maple St.</Address1>
<Address2>Apt. E105</Address2>
<City>Seattle</City>
<State>WA</State>
<Zip>98147</Zip>
</Address>')
GO
この例では、マッピング スキーマで、Customers2 テーブルの AddressOverflow 列に格納されている未使用データを取得します。ここでは、<ElementType> に sql:overflow-field 属性を指定します。
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Customers2" sql:overflow-field="AddressOverflow" >
<AttributeType name="CustomerID" />
<AttributeType name="ContactName" />
<attribute type="CustomerID" />
<attribute type="ContactName"/>
</ElementType>
</Schema>
スキーマに対してサンプル XPath クエリをテストするには
上のスキーマのコードをコピーして、テキスト ファイルに貼り付け、OverflowXdr.xml として保存します。
次のテンプレートをコピーして、テキスト ファイルに貼り付け、OverflowXdr.xml を保存したディレクトリに OverflowXdrT.xml として保存します。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="OverflowXdr.xml"> Customers2 </sql:xpath-query> </ROOT>
マッピング スキーマ (OverflowXdr.xml) に指定するディレクトリ パスは、テンプレートを保存するディレクトリに対する相対パスです。次のように、絶対パスを指定することもできます。
mapping-schema="C:\MyDir\OverflowXdr.xml"
SQLXML 4.0 テスト スクリプト (sqlxml4test.vbs) を作成し、それを使用してテンプレートを実行します。
詳細については、「ADO を使用した、SQLXML 4.0 クエリの実行」を参照してください。
次に結果セットを示します。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Customers2 CustomerID="ALFKI" ContactName="Joe">
<Address1>Maple St.</Address1>
<Address2>Apt. E105</Address2>
<City>Seattle</City>
<State>WA</State>
<Zip>98147</Zip>
</Customers2>
</ROOT>