Udostępnij przez


Creating XML Data Type Variables and Columns

The xml data type is a built-in data type in SQL Server and is somewhat similar to other built-in types such as int and varchar.Jak z innymi typami wbudowanych, można użyć xml Typ danych jako typ kolumna, po utworzeniu tabela, jako zmienna typu, typu parametru typ zwrotny funkcja, lub w CAST i CONVERT.

Tworzenie kolumn i zmienne

Aby utworzyć xml Typ kolumna jako część tabela, użycie CREATE TABLE instrukcja, jak pokazano w poniższym przykładzie:

CREATE TABLE T1(Col1 int primary key, Col2 xml) 

Można użyć DECLARE statement Aby utworzyć zmiennej xml Wpisz, jak pokazano w następującym przykładzie.

DECLARE @x xml 

Utwórz maszynowy xml Zmienna, określając kolekcja schematu XML, jak pokazano w poniższym przykładzie.

DECLARE @x xml (Sales.StoreSurveySchemaCollection)

Aby przekazać xml parametr do procedura przechowywana, użycie typu CREATE PROCEDURE instrukcja, jak pokazano w poniższym przykładzie.

CREATE PROCEDURE SampleProc(@XmlDoc xml) AS ... 

Za pomocą XQuery zbadać wystąpień XML przechowywane w kolumnach, parametrów i zmiennych.Aby zastosować aktualizacje do wystąpienia XML umożliwia także XML język edycji danych (XML DML).Ponieważ standardowe XQuery nie zdefiniowano DML XQuery w czasie rozwoju, SQL Server wprowadzenie Języka modyfikacji danych XML rozszerzeń XQuery.Rozszerzenia te umożliwiają wykonywanie wstawianie, aktualizowanie i usuwanie operacji.

Przypisywanie domyślnych

W tabela można przypisać domyślne wystąpienie XML do kolumna xml Typ. Można podać domyślny kod XML w jeden z dwóch sposobów: za pomocą XML stała, lub przy użyciu jawne oddanych do xml Typ.

Zapewnić domyślne XML jako stała XML, należy użyć składni, jak to pokazano w poniższym przykładzie.Należy zauważyć, że ciąg jest niejawnie LANE do xml Typ.

CREATE TABLE T (XmlColumn xml default N'<element1/><element2/>')

Aby zapewnić domyślne XML jako jawne CAST Aby xml, użyj składni, jak pokazano w poniższym przykładzie.

CREATE TABLE T (XmlColumn xml 
                  default CAST(N'<element1/><element2/>' AS xml))

SQL Server obsługuje także wartości NULL i NOT NULL ograniczenia dla kolumny xml Typ. Na przykład:

CREATE TABLE T (XmlColumn xml NOT NULL)

Określanie ograniczeń

Podczas tworzenia kolumna xml Typ, można określić ograniczenia poziom kolumna lub poziom tabela. Za pomocą warunków ograniczających w następujących sytuacjach:

  • Nie można wyrazić reguły biznesowe w schematach XML.Na przykład adres dostawy Sklep kwiat musi być w obrębie 50 mil lokalizacji biznesowych.Mogą być zapisywane jako ograniczenia dla kolumna XML.Może się wiązać z ograniczeniem xml metody typu danych.

  • Swoje ograniczenie dotyczy innych XML lub XML inny niż kolumn w tabela.Przykładem jest wykonanie identyfikator (klienta/Customer/@CustId) można znaleźć w wystąpieniu XML do zgodna z wartością kolumna IDKlienta relacyjnej.

Można określić ograniczenia dla wpisywanych lub bez typu xml Typ danych kolumny. Nie można jednak użyć Metody 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 obcy / klucz podstawowy

  • UNIKATOWE

  • SORTOWANIE

    XML zawiera swoją własną kodowania.Sortowanie dotyczą tylko typu ciąg.The xml data type is not a ciąg type. Jednak ma ciąg znaków reprezentujący i umożliwia rzutowania do i z typami danych ciągu.

  • REGUŁY

Zamiast ograniczenia polega na utworzeniu otoki, funkcja zdefiniowanej przez użytkownika, aby otoczyć xml dane wpisz metoda i określ funkcja zdefiniowaną przez użytkownika w ograniczenie typu check, jak pokazano w poniższym przykładzie.

W poniższym przykładzie, ograniczenia Col2 Określa, że każde wystąpienie XML przechowywanych w tej kolumnie muszą mieć <ProductDescription> element zawierający 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 powoduje zwrócenie typu danych 1 Jeśli <ProductDescription> element w wystąpieniu zawiera ProductID atrybut. W przeciwnym razie zwraca 0.

Teraz można utworzyć tabela z ograniczeniem 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 zakończy się pomyślnie:

INSERT INTO T values(1,'<ProductDescription ProductID="1" />')

Ze względu na ograniczenia Wstaw następujący kończy się niepowodzeniem:

INSERT INTO T values(1,'<Product />')

Tej samej lub innej tabela

An xml data type kolumna can be created in a tabela that contains other relational columns, or in a separate tabela with a klucz obcy relationship to a main tabela.

Tworzenie xml dane należy wpisać kolumna w tej samej tabela, gdy spełniony jest jeden z następujących warunków:

  • Aplikacja wykonuje pobierania danych kolumna XML i nie wymaga XML indeksu na kolumnie XML.

  • Aby utworzyć indeks XML xml Typ danych kolumna i podstawowego kluczu głównym tabela jest taka sama, jak jego klastrowanie klucz. Aby uzyskać więcej informacji zobaczIndeksy w kolumnach typu danych XML.

Tworzenie xml Jeśli są spełnione następujące warunki, kolumna w osobnej tabela typ danych:

  • Aby utworzyć indeks XML xml kolumna o typie danych, ale klucz podstawowy tabela głównej różni się od jego klastrowania klucza tabela głównej nie ma klucz podstawowy lub tabela głównej jest sterty (Brak klucza klastrowania). Może to być wartość true, jeśli już tabela głównej.

  • Nie ma skanowanie tabela, aby zwolnić niedziałający ze względu na obecność XML, kolumna w tabela.Używa spacji, czy jest on przechowywany w wierszu lub limit czasu z wiersza.

See Also

Other Resources