Udostępnij za pośrednictwem


SQL:variable() funkcja (XQuery)

Opisuje zmienna, która zawiera wartość relacyjnej SQL w wyrażeniach XQuery.

sql:variable("variableName") as xdt:anyAtomicType?

Remarks

Zgodnie z opisem w temacie wiązanie danych relacyjnej wewnątrz XML, można użyć tej funkcja podczas korzystania z Metody typu danych XML narazić relacyjnej wartość wewnątrz XQuery.

Na przykład Metoda Query() Pozwala określić kwerendy przed wystąpienie XML, który jest przechowywany w xml Typ danych zmiennej lub kolumna. Czasami również można używać wartości z kwerendy Transact-SQL Zmienna, lub parametr do relacyjnych i dane XML razem. Aby to zrobić, należy użyć SQL:variable funkcja.

Wartość SQL będą mapowane do odpowiedniej wartości XQuery i będzie jego typ podstawowy typ XQuery, na który jest odpowiednikiem odpowiedniego typu programu SQL.

Tylko może odnosić się do xml wystąpienie w kontekście wyrażenie źródłowe XML DML wstawiać instrukcja; w przeciwnym razie nie można odwołać się do wartości, które są typu XML lub języka (CLR) w czasie wykonywania przez użytkownika typu wspólnego.

Przykłady

A.Za pomocą funkcja sql:variable() do wartości zmiennej języka Transact-SQL w formacie XML

Poniższy przykład tworzy wystąpienie XML, który składa się z następujących czynności:

  • (WartośćProductID) z kolumna-XML. The sql:kolumna() funkcja is used to bind this value in the XML.

  • (WartośćListPrice) kolumna XML inny niż z innej tabela. Ponownie, sql:column() Służy do powiązania tej wartości w danych XML.

  • (WartośćDiscountPrice) z Transact-SQL Zmienna. The sql:variable() metoda is used to bind this value into the XML.

  • (WartośćProductModelName) z xml Kolumna typu dokonać bardziej interesujące kwerendy.

To jest kwerenda:

DECLARE @price money

SET @price=2500.00
SELECT ProductID, Production.ProductModel.ProductModelID,CatalogDescription.query('
declare namespace pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";

       <Product 
           ProductID="{ sql:column("Production.Product.ProductID") }"
           ProductModelID= "{ sql:column("Production.Product.ProductModelID") }"
           ProductModelName="{/pd:ProductDescription[1]/@ProductModelName }"
           ListPrice="{ sql:column("Production.Product.ListPrice") }"
           DiscountPrice="{ sql:variable("@price") }"
        />') 
FROM Production.Product 
JOIN Production.ProductModel
ON Production.Product.ProductModelID = Production.ProductModel.ProductModelID
WHERE ProductID=771

Pierwszy przycisk jest przyciskiem domyślnym.

  • XQuery wewnątrz query() Metoda konstrukcje kodu XML.

  • The namespace keyword is used to define a namespace prefix in the XQuery Prolog.Można to zrobić, ponieważ ProductModelName wartość atrybut jest pobierana z CatalogDescription xml Kolumna typu, która ma schemat, skojarzony z nim.

To jest wynik:

<Product ProductID="771" ProductModelID="19" 
         ProductModelName="Mountain 100" 
         ListPrice="3399.99" DiscountPrice="2500" />