Aracılığıyla paylaş


xml veri türü değişken ve sütunlar oluşturma

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.Diðer yerleþik türlerle kullanabileceğiniz gibi xml veri türü bir değişken türü bir parametre türü bir tablo oluşturduğunuzda, bir sütun tipi olarak bir işlev-dönüş türü, veya ARTIĞINI ve convert.

Sütunlar ve değişkenleri oluşturma

Oluşturmak için bir xml türü sütun bir tablo kullanmak bir parçası olarak bir CREATE TABLE deyim aşağıdaki örnekte gösterildiği gibi:

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

Kullanabileceğiniz bir DECLARE statement bir değişken oluşturmak için xml olarak, aşağıdaki örnek gösterir.

DECLARE @x xml 

Bir yazılı oluşturmak xml bir xml şemasını belirterek değişken koleksiyon, aşağıdaki örnek. gösterilen

DECLARE @x xml (Sales.StoreSurveySchemaCollection)

Geçirilecek bir xml tür parametresi bir saklı yordam kullanmak için bir CREATE PROCEDURE deyim, gösterildiği gibi aşağıdaki örnek.

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

XQuery, sütunlar, parametre veya değişken depolanan xml örneklerini sorgulamak için kullanabilirsiniz.xml veri düzenleme dili (xml dml), xml örnekleri için güncelleştirmeleri uygulamak için de kullanabilirsiniz.XQuery standart geliştirme, saat XQuery dml tanımlamak çünkü SQL Server tanıtan xml veri değişikliği dili XQuery uzantıları.Bu uzantılar ekleme, gerçekleştirmenize olanak güncelleştirme ve silme işlemleri.

Varsayılan atama

İçinde bir tablo, varsayılan xml örnek bir sütun için atamak için xml türü.İki yoldan birini kullanarak XML'de varsayılan sağlayabilir: xml kullanarak sabit, ya da açýk bir dönüþtürme iþlemini kullanarak xml türü.

Varsayılan olarak, bir xml xml sağlamak için sabit, aşağıdaki örnekte gösterildiği gibi sözdizimini kullanın.Dize örtülü olarak ARTIĞINI Not xml türü.

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

Varsayılan olarak açık bir xml sağlamak için CAST için xml, aşağıdaki örnek. göründüğü gibi sözdizimini kullanın

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

SQL Servernull ve değil null Kısıtlamaları sütunlarında da destekler xml türü.Örneğin:

CREATE TABLE T (XmlColumn xml NOT NULL)

Kısıtlamalar belirtme

Sütunları oluşturduğunuzda, xml türü, sütun düzey veya tablo düzey kısıtlamaları. tanımlayabilirsinizKısıtlamaları aşağıdaki durumlarda kullanın:

  • Sizin iş kuralları xml şemaları ifade.Örneğin, bir çiçek Shop teslimat adresi 50 mil içinde kendi iş yeri olması gerekir.xml sütun üzerinde bir kısıtlama olarak yazılabilir.Kısıtlaması içerebilir xml veri türü yöntemleri.

  • Sizin kısıtlaması diğer xml ya da xml olmayan sütunlar içerir tablo.Zorlama bir müşteri kimliği ile bir örnektir (/Customer/@CustId) ilişkisel CustomerID değeri eşleştirmek için bir xml örnek bulunan sütun.

Yazılı veya türlenmemiş kısıtlamaları belirtmek xml veri türü sütun.Ancak kullanamazsınız xml veri türü yöntemleri ne zaman belirlediğiniz sınırlamalar.Ayrıca, xml veri türü sütun ve tablo Kısıtları desteklemez:

  • BİRİNCİL ANAHTAR / YABANCI ANAHTAR

  • BENZERSİZ

  • HARMANLAMA

    xml, kendi kodlama sağlar.Alfabe yalnızca dize türleri için geçerlidir.The xml data type is not a string type.Ancak, dize gösterimine sahip ve çevrim ve gelen dize veri türlerini tanır.

  • KURAL

Kısıtlamaları kullanmaya alternatif sarmalayıcısı, kaydırmak için kullanıcı tanımlı işlevin oluşturmaktır xml veri yöntem yazın ve denetim kısıtlamasını aşağıdaki örnek. göründüğü gibi kullanıcı tanımlı işlev belirtin

Aşağıdaki örnekte, kısıtlama Col2 her xml örnek bu konuda depolanan belirtir sütun olması gerekir bir <ProductDescription> içeren öğe bir ProductID öznitelik.Bu sınırlama, bu kullanıcı tanımlı işlev uygulanır:

CREATE FUNCTION my_udf(@var xml) returns bit
AS BEGIN 
RETURN @var.exist('/ProductDescription/@ProductID')
END
GO

Dikkat exist() yöntem, xml veri türü verir 1 , <ProductDescription> öğesinde örnek içeren ProductID öznitelik.Aksi durumda, işlevi 0.

Şimdi, oluşturabileceğiniz bir tablo ile bir sütun düzeyinde kısıtlama aşağıdaki gibi:

CREATE TABLE T (
    Col1 int primary key, 
    Col2 xml check(dbo.my_udf(Col2)=1))
GO

Aşağıdaki ekleme başarılı olur:

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

Kısıtlama nedeniyle aşağıdaki ekleme işlemi başarısız olur:

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

Aynı veya farklı bir tablo

Bir xml veri türü sütun diğer ilişkisel içeren bir tablo içinde oluşturulan sütuns, ya da ayrı bir tabloda bir yabancı anahtar ilişkisi ana bir tablo. ile

Oluşturma bir xml veri türü sütununda aynı tablo ne zaman aşağıdaki koşullardan biri doğrudur:

  • Uygulamanız veri alma xml sütun üzerinde gerçekleştirir ve bir xml sütun xml dizin gerektirmez.

  • Bir xml dizin oluşturmak istediğiniz xml veri türü sütun ve birincil anahtar ana tablo aynı kümeleme alt anahtarı.Daha fazla bilgi için bkz: xml veri türü sütun dizinlerde.

Oluşturma xml veri türü sütununda ayrı bir tablo aşağıdaki koşullar doğruysa,:

  • Bir xml dizin oluşturmak istediğiniz xml veri türü sütununda, ancak birincil anahtar ana tablo , kümeleme anahtarını veya ana farklı tablo birincil anahtar veya ana yok tablo bir yığın (kümeleme anahtarı yok) olur.Ana tablo zaten varsa, doğru olabilir.

  • Tablo taramaları yavaşlatmak için istediğiniz kapalı xml sütun tablosunda bulunması nedeniyle.Satır veya satır Giden saklı olup bu alanı kullanır.

Ayrıca bkz.

Diğer Kaynaklar