Tworzenie zmiennych typu danych XML i kolumn
xml Typ danych jest typ danych wbudowane w SQL Server i przypomina nieco innych wbudowanych typów, takich jak int i varchar.Jak z innymi typami wbudowanych można używać xml typu danych kolumna wpisz podczas tworzenia tabela jako typ zmiennej, typ parametru typu funkcja zwrotu lub w ODDANYCH i KONWERTOWAĆ.
Tworzenie kolumn i zmiennych
Aby utworzyć xml typu kolumna jako część tabela, użyj CREATE TABLE instrukcja, jak pokazano w następującym przykładzie:
CREATE TABLE T1(Col1 int primary key, Col2 xml)
Można użyć DECLARE statement utworzyć zmienną xml typu, jak pokazuje przykład.
DECLARE @x xml
Tworzenie maszynowy xml zmiennej określając kolekcja schematu XML, jak pokazano w następującym przykładzie.
DECLARE @x xml (Sales.StoreSurveySchemaCollection)
Aby przekazać xml parametr do procedura składowana, użyj typu CREATE PROCEDURE instrukcja, jak pokazano w następującym przykładzie.
CREATE PROCEDURE SampleProc(@XmlDoc xml) AS ...
XQuery można użyć kwerendy przechowywane w kolumnach, parametry lub zmienne instancji XML.Za pomocą języka manipulacji danych XML (XML DML) zastosować aktualizacje do wystąpień XML.Ponieważ nie zdefiniowano XQuery standard XQuery LŚD na czas rozwoju, SQL Server wprowadzono Języka modyfikacji danych XML rozszerzenia XQuery.Rozszerzenia te umożliwiają wykonywanie Wstawianie, aktualizowanie i usuwanie operacji.
Przypisywanie domyślnych
W tabela, można przypisać domyślną XML wystąpienie do kolumna xml typu.Można podać domyślny kod XML w jeden z dwóch sposobów: przy użyciu stała XML lub za pomocą jawnego oddanych do xml typu.
Zapewnienie domyślne XML jako stała XML, należy użyć składni, jak pokazano w następującym przykładzie.Należy zauważyć, że ciąg jest niejawnie ODDANYCH do xml typu.
CREATE TABLE T (XmlColumn xml default N'<element1/><element2/>')
Zapewnienie domyślne XML jako jawne CAST do xml, użyj składni, jak pokazano w następującym przykładzie.
CREATE TABLE T (XmlColumn xml
default CAST(N'<element1/><element2/>' AS xml))
SQL Serverobsługuje także NULL i nie NULL ograniczeń na kolumnach xml typu.Na przykład:
CREATE TABLE T (XmlColumn xml NOT NULL)
Określanie ograniczeń
Podczas tworzenia kolumna xml typu, można zdefiniować kolumna -poziom lub tabela -poziom ograniczenia.Użyj ograniczeń w następujących sytuacjach:
Reguły biznesowe nie można wyrazić w schematach XML.Na przykład adres dostawy Shop kwiat musi być w promieniu 50 mil od jego lokalizacji biznesowych.Można to zapisać jako ograniczenie XML kolumna.Ograniczenie może obejmować xml Typ danych metod.
Na ograniczenie dotyczy innych XML lub XML inny niż kolumn w tabela.Przykładem jest identyfikator klienta egzekwowania (/Customer/@CustId) w XML wystąpienie do wartościom w relacyjnych kolumnie IDKlienta.
Można określić ograniczenia wpisane lub pozostawiana xml Typ danych kolumny.Nie można jednak używać metod typu danych XML podczas określania ograniczeń.Należy również zauważyć, że xml Typ danych nie obsługuje następujące ograniczenia dla kolumna tabela:
KLUCZ PODSTAWOWY KLUCZ / OBCY
UNIKATOWE
SORTOWANIE
XML zawiera własny kodowania.Sortowanie dotyczą tylko typu ciąg.xml Typ danych jest nie typu ciąg.Jednak mieć reprezentację ciąg i umożliwia rzutowanie z typami danych ciąg i.
REGUŁY
Zamiast ograniczenia jest utworzenie otoki, funkcja zdefiniowanej przez użytkownika, zawijanie xml danych wpisz metoda i określ funkcja zdefiniowaną przez użytkownika w ograniczenie typu check, jak pokazano w następującym przykładzie.
W poniższym przykładzie ograniczenie Col2 Określa, że każde wystąpienie XML przechowywane w tym kolumna musi mieć <ProductDescription> element, który ProductID atrybut.To ograniczenie jest wymuszane przez tę funkcja zdefiniowaną przez użytkownika:
CREATE FUNCTION my_udf(@var xml) returns bit
AS BEGIN
RETURN @var.exist('/ProductDescription/@ProductID')
END
GO
Należy zauważyć, że exist() metoda xml zwraca typ danych 1 Jeśli <ProductDescription> element wystąpienie zawiera ProductID atrybut.W przeciwnym razie zwraca 0.
Można teraz utworzyć tabela z ograniczenie poziom kolumna w następujący sposób:
CREATE TABLE T (
Col1 int primary key,
Col2 xml check(dbo.my_udf(Col2)=1))
GO
Wstaw następujący powiedzie się:
INSERT INTO T values(1,'<ProductDescription ProductID="1" />')
Z powodu ograniczenia Wstaw następujące niepowodzenia:
INSERT INTO T values(1,'<Product />')
Samej lub innej tabeli.
xml kolumna Typ danych można utworzyć w tabela, która zawiera inne kolumna relacyjnej lub w osobnej tabela z relacji klucz obcy do tabela głównej.
Tworzenie xml kolumna Typ danych w tej samej tabela, gdy spełniony jest jeden z następujących warunków:
Aplikacja wykonuje pobierania danych kolumna XML i nie wymagają XML indeksu na kolumnie XML.
Chcesz utworzyć indeks XML xml kolumna Typ danych oraz klucz podstawowy głównej tabela jest taki sam jak jej klucz klastrowania.Aby uzyskać więcej informacji, zobacz Indeksy na kolumnach typu danych XML.
Tworzenie xml kolumna Typ danych w osobnej tabela, jeśli są spełnione następujące warunki:
Chcesz utworzyć indeks XML xml kolumna Typ danych, ale klucz podstawowy tabela głównej różni się od jego klastrowanie klucz lub głównej tabela nie ma klucza podstawowego lub tabela głównej jest sterty (nie klastrowanie klucza).Może to być wartość true, jeśli już istnieje w tabela głównej.
Nie ma skanowanie tabela na powolne niedziałający z powodu obecności XML kolumna w tabela.Używa miejsca, czy jest on przechowywany w wierszu lub poza wiersz.