使用 sql:is-constant 建立常數元素 (SQLXML 4.0)

適用於:SQL ServerAzure SQL 資料庫

若要指定常數元素,XSD 架構中的元素不會對應至任何資料庫數據表或數據行,您可以使用 sql:is-constant 註釋。 此批注接受布爾值 (0 = false, 1 = true)。 可接受的值為 0、1、true 和 false。 您可以在沒有任何屬性的元素上指定 sql:is-constant 註釋。 如果在值為 true (或 1) 的元素上指定,該元素就不會對應至資料庫,但仍會出現在 XML 檔中。

sql:is-constant 註釋可用於:

  • 將最上層專案新增至 XML 檔。 XML 需要檔的單一最上層元素(根元素)。

  • 建立容器元素,例如 <包裝所有訂單的 Orders> 元素。

sql:is-constant 註釋可以新增至 <complexType> 元素。

範例

若要使用下列範例建立工作範例,您必須符合特定需求。 如需詳細資訊,請參閱 執行 SQLXML 範例的需求。

A. 指定 sql:is-constant 以新增容器元素

在此批注式 XSD 架構中,<CustomerOrders> 會藉由指定值為 1 的 sql:is-constant 屬性,定義為常數元素。 因此, <CustomerOrders> 不會對應至任何資料庫數據表或數據行。 這個常數專案是由 <Order> 子專案所組成。

雖然 <CustomerOrders> 不會對應至任何資料庫數據表或數據行,但它仍會顯示在產生的 XML 中,做為包含 Order> 子元素的<容器元素。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
<xsd:annotation>  
  <xsd:appinfo>  
    <sql:relationship name="CustOrders"  
        parent="Sales.Customer"  
        parent-key="CustomerID"  
        child="Sales.SalesOrderHeader"  
        child-key="CustomerID" />  
  </xsd:appinfo>  
</xsd:annotation>  
  
  <xsd:element name="Customer" sql:relation="Sales.Customer" >  
   <xsd:complexType>  
     <xsd:sequence>  
        <xsd:element name="CustomerOrders" sql:is-constant="1" >  
          <xsd:complexType>  
            <xsd:sequence>  
              <xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"  
                           sql:relationship="CustOrders"   
                           maxOccurs="unbounded" >  
                <xsd:complexType>  
                   <xsd:attribute name="SalesOrderID" type="xsd:integer" />  
                   <xsd:attribute name="OrderDate" type="xsd:date" />  
                   <xsd:attribute name="CustomerID" type="xsd:string" />  
                </xsd:complexType>  
              </xsd:element>  
            </xsd:sequence>  
           </xsd:complexType>  
          </xsd:element>  
         </xsd:sequence>  
          <xsd:attribute name="CustomerID" type="xsd:string" />  
     </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
若要針對架構測試範例 XPath 查詢
  1. 複製上述架構程序代碼,並將它貼到文本檔中。 將檔案儲存為isConstant.xml。

  2. 複製下列範本,並將它貼到文字檔中。 將檔案儲存為isConstantT.xml,並儲存在儲存isConstant.xml的相同目錄中。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="isConstant.xml">  
            Customer[@CustomerID=1]  
        </sql:xpath-query>  
    </ROOT>  
    

    為對應架構指定的目錄路徑 (isConstant.xml) 相對於儲存範本的目錄。 您也可以指定絕對路徑,例如:

    mapping-schema="C:\MyDir\isConstant.xml"  
    
  3. 建立並使用 SQLXML 4.0 測試腳本 (Sqlxml4test.vbs) 來執行範本。

    如需詳細資訊,請參閱 使用 ADO 執行 SQLXML 查詢

這是部分結果集:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">   
<Customer CustomerID="1">   
  <CustomerOrders>   
    <Order SalesOrderID="43860" OrderDate="2001-08-01" CustomerID="1" />   
    <Order SalesOrderID="44501" OrderDate="2001-11-01" CustomerID="1" />   
    <Order SalesOrderID="45283" OrderDate="2002-02-01" CustomerID="1" />   
    <Order SalesOrderID="46042" OrderDate="2002-05-01" CustomerID="1" />   
    ...  
  </CustomerOrders>   
</Customer>   
</ROOT>