Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Olyan változót tesz elérhetővé, amely egy SQL-relációs értéket tartalmaz egy XQuery-kifejezésben.
Szintaxis
sql:variable("variableName") as xdt:anyAtomicType?
Megjegyzések
A témakörben leírtak szerint Relációs adatok kötése XML-belül, ezt a függvényt akkor használhatja, ha XML-adattípus-metódusokat a relációs érték XQueryn belüli megjelenítéséhez.
A query() metódus például egy xml- adattípus változójában vagy oszlopában tárolt XML-példányra vonatkozó lekérdezés megadására szolgál. Előfordulhat, hogy azt is szeretné, hogy a lekérdezés egy Transact-SQL változó vagy paraméter értékeit használja a relációs és XML-adatok összehozásához. Ehhez az sql:variable függvényt kell használnia.
Az SQL-érték megfeleltethető egy megfelelő XQuery-értékhez, és a típusa egy XQuery alaptípus lesz, amely egyenértékű a megfelelő SQL-típussal.
Csak xml-példányra hivatkozhat egy XML-DML beszúrási utasítás forráskifejezésének kontextusában; ellenkező esetben nem hivatkozhat olyan értékekre, amelyek xml vagy felhasználó által definiált közös nyelvi futtatókörnyezeti (CLR) típusúak.
Példák
Egy. Az sql:variable() függvény használata Transact-SQL változó értékének XML-be való behozásához
Az alábbi példa egy XML-példányt hoz létre, amely az alábbiakból áll:
Nem XML-oszlopból származó érték (
ProductID). Az sql:column() függvény használatával köti össze ezt az értéket az XML-ben.Egy nem XML-oszlopból származó érték (
ListPrice) egy másik táblából. Asql:column()ismét az XML-ben köti össze ezt az értéket.Egy Transact-SQL változóból származó érték (
DiscountPrice). Asql:variable()metódust használja az érték XML-hez való kötéséhez.Egy xml- típusú oszlopból származó érték (
ProductModelName) a lekérdezés érdekesebbé tétele érdekében.
Ez a lekérdezés:
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
Jegyezze fel az előző lekérdezésben szereplő következőket:
A
query()metóduson belüli XQuery az XML-t hozza létre.A
namespacekulcsszó a névtér előtagjának meghatározására szolgál az XQuery Prolog. Ez azért történik, mert aProductModelNameattribútum értéke aCatalogDescription xmltípusoszlopból lesz lekérve, amelyhez séma van társítva.
Ez az eredmény:
<Product ProductID="771" ProductModelID="19"
ProductModelName="Mountain 100"
ListPrice="3399.99" DiscountPrice="2500" />
Lásd még:
SQL Server XQuery Extension Functions
Gépelt XML összehasonlítása a nem beírt XML-
XML-adatok (SQL Server)
XML-adatpéldányok létrehozása
xml-adattípus-metódusok
XML-adatmódosítási nyelv (XML DML)