Wiązanie danych relacyjnych wewnątrz danych XML
Można określić Metody typu danych XML przeciwko xml Typ danych zmiennej lub kolumna.Na przykład Query() metoda (xml typ danych) wykonuje określoną XQuery przeciwko XML wystąpienie.Konstruowanie XML w ten sposób, można wprowadzać wartości z XML inny niż typ kolumna lub zmiennej języka Transact -SQL .Ten proces jest zwany powiązanie danych relacyjnych wewnątrz XML.
Powiązać z relacyjnymi bazami danych XML inny niż wewnątrz XML, aparat bazy danych SQL Server zapewnia następujące pseudo-functions:
SQL:kolumna() funkcji (XQuery)Umożliwia używanie wartości z relacyjnych kolumna XQuery lub XML DML wyrażenie.
SQL:variable() funkcji (XQuery) .Umożliwia używanie wartości zmiennej SQL XQuery lub XML DML wyrażenie.
Aby użyć tych funkcji, z xml Typ danych metody w każdym przypadku, gdy chcesz udostępnić relacyjnej wartość wewnątrz XML.
Tych funkcji nie można używać do odwołania danych w kolumnach lub zmiennych xml, CLR typy zdefiniowane przez użytkownika, Data/Godzina, smalldatetime, text, ntext, sql_variant, i image typów.
To powiązanie jest również do celów tylko do odczytu.Oznacza to, że nie można zapisać danych w kolumnach, które korzystają z tych funkcji.Na przykład sql:variable("@x") = "niektóre wyrażenie" nie jest dozwolone.
Przykład: Cross -domena przy użyciu kwerendy sql:variable()
W tym przykładzie przedstawiono sposób sql:variable() można włączyć aplikacji parameterize kwerendy.ISBN jest przekazywana za pomocą SQL zmiennej @ isbn.Zastępując stała z sql:variable(), kwerenda może służyć do wyszukiwania dowolnego ISBN i nie tylko jednego, którego ISBN jest 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
SQL: (kolumna) może być używany w podobny sposób i oferuje dodatkowe korzyści.Indeksy kolumna mogą służyć w celu zwiększenia wydajności, ustalonej na podstawie kosztów optymalizator kwerendy.Ponadto, obliczanej kolumna mogą być przechowywane w podwyższonej właściwość.