SQL:variable() funkcji (XQuery)
Opisuje zmienna, która zawiera wartość relacyjnej SQL wewnątrz wyrażenie XQuery.
Składnia
sql:variable("variableName") as xdt:anyAtomicType?
Uwagi
Jak opisano w temacie Wiążące relacyjnymi bazami danych wewnątrz XML, można użyć tej funkcja, korzystając z metod typu danych XML do udostępnienia relacyjnej wartość wewnątrz XQuery.
Na przykład query() metoda jest używana do określenia zapytanie XML wystąpienie jest przechowywana w xml Typ danych zmiennej lub kolumna.Czasami może być również kwerendy, aby użyć wartości z Transact-SQL zmiennej lub parametru do relacyjnych i dane XML razem.Aby to zrobić, użyj sql:variable funkcja.
Wartość SQL będą mapowane do odpowiedniej wartości XQuery i jego typ będzie typ bazowy XQuery jest równoważne odpowiedni typ SQL.
Tylko może odnosić się do xml instancji w kontekście wyrażenia źródło XML LŚD insert instrukcja; w przeciwnym razie nie można odwołać się do wartości typu xml lub common language runtime (CLR) typ zdefiniowany przez użytkownika.
Przykłady
A.Przy użyciu funkcja sql:variable() do wprowadzenia wartości zmiennej języka Transact-SQL w XML
Poniższy przykład tworzy XML wystąpienie , składający się z następujących czynności:
Wartość (ProductID) z kolumna XML inny niż.Sql:kolumna() funkcja jest używana do powiązania tej wartości w pliku XML.
Wartość (ListPrice) z kolumna XML programu z innej tabela.Ponownie sql:column() jest używana do powiązania tej wartości w pliku XML.
Wartość (DiscountPrice) z Transact-SQL zmiennej.sql:variable() metoda bind tej wartości do pliku XML.
Wartość (ProductModelName) z xml Typ kolumna, aby kwerenda bardziej interesujące.
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
Poniższe z poprzedniej kwerendy:
XQuery wewnątrz query() metoda konstrukcji XML.
namespace Słowo kluczowe jest używany do definiowania prefiks obszaru nazw w XQuery prologu.To zrobić, ponieważ ProductModelName wartość atrybut jest pobierana z CatalogDescription xml Typ kolumna, posiada schematu skojarzone go
Jest to wynikiem:
<Product ProductID="771" ProductModelID="19"
ProductModelName="Mountain 100"
ListPrice="3399.99" DiscountPrice="2500" />