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" />