Megosztás a következőn keresztül:


Relációs adatok kötése XML-adatokon belül

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Megadhatod az xml Data Type Method-okat egy xml adattípus változó vagy oszlop ellen. Például a query() metódus (xml Data Type) végrehajtja a megadott XQuery-t egy XML példányon. Ha így építesz XML-t, érdemes lehet egy nem-XML típusú oszlopból vagy egy Transact-SQL változóból származó értéket behozni. Ezt a folyamatot XML-en belüli relációs adat kötésének nevezik.

Az XML-en belüli nem-XML relációs adatok kötéséhez az SQL Server Database Engine a következő pszeudo-függvényeket biztosítja:

Ezeket a függvényeket xml adattípus-metódusokkal is használhatod, amikor relációs értéket szeretnél megjeleníteni XML-en belül.

Ezeket a függvényeket nem használhatod arra, hogy az xml, CLR felhasználó által definiált típusok, datetime, smalldatetime, szöveg, ntext, sql_variant és kép típusok oszlopokban vagy változókban adatokat referáljanak.

Ez a kötés csak olvasásra vonatkozik. Vagyis nem lehet adatokat írni oszlopokba, amelyek ezeket a funkciókat használják. Például a sql:variable("@x")="some expression" nem engedélyezett.

Példa: Területek közötti lekérdezés sql:variable() használatával

Ez a példa bemutatja, hogyan teheti a sql:variable() egy alkalmazás számára a lekérdezés paraméterezését. Az ISBN-t egy SQL változóval @isbntovábbítják. Ha a konstanst sql:variable() betűre cseréljük, a lekérdezés bármely ISBN-re kereshető, nem csak arra, amelynek ISBN-je 0-7356-1588-2.

DECLARE @isbn VARCHAR(20)  
SET     @isbn = '0-7356-1588-2'  
SELECT  xCol  
FROM    T  
WHERE   xCol.exist ('/book/@ISBN[. = sql:variable("@isbn")]') = 1  

A sql:column() hasonló módon használható, és további előnyöket biztosít. Az oszlop feletti indexek a hatékonyság érdekében használhatók, ahogy azt a költségalapú lekérdezésoptimalizáló dönti el. Emellett a kiszámított oszlop tárolhat egy előrejutott tulajdonságot.

Lásd még:

  • xml-adattípus-metódusok