Aracılığıyla paylaş


udt veri işleme

Transact-SQL kullanıcı tanımlı tür (udt) sütundaki verileri değiştirirken, hiçbir özel sözdizimi INSERT, update veya delete deyimleri için sağlar.The Transact-SQL CAST or CONVERT functions are used to cast native data types to the UDT type.

udt sütunda veri ekleme

Aşağıdaki Transact-SQL ifadeleri örnek veri üç satır Ekle puan tablo.The Point data type consists of X and Y integer values that are exposed as properties of the UDT.cast kullanmanız gerekir ya da işlev virgülle atama yapmak için x ve y değerleri için noktası türü.İlk iki deyim, bir dize değeri dönüştürmek için dönüştürme işlev kullanın noktası türü ve üçüncü deyim cast işlevini kullanır:

INSERT INTO dbo.Points (PointValue) VALUES (CONVERT(Point, '3,4'));
INSERT INTO dbo.Points (PointValue) VALUES (CONVERT(Point, '1,5'));
INSERT INTO dbo.Points (PointValue) VALUES (CAST ('1,99' AS Point));

Verileri seçme

Aşağıdaki select deyim udt ikili değerini seçer.

SELECT ID, PointValue FROM dbo.Points

Okunabilir bir biçimde görüntülenen çıktı görmek için arama ToString yöntem, noktası değeri için dize gösterimine dönüştürür udt,.

SELECT ID, PointValue.ToString() AS PointValue 
FROM dbo.Points;

Bu aşağıdaki sonuçlar verir.

IDPointValue
----------
13,4
21,5
31,99

Ayrıca Transact-SQL ARTIĞINI ve convert işlevleri elde aynı sonuçlar.

SELECT ID, CAST(PointValue AS varchar) 
FROM dbo.Points;

SELECT ID, CONVERT(varchar, PointValue) 
FROM dbo.Points;

The Point UDT exposes its X and Y coordinates as properties, which you can then select individually.Aşağıdaki Transact-SQL deyim x ve y koordinatlarını ayrı olarak seçer:

SELECT ID, PointValue.X AS xVal, PointValue.Y AS yVal 
FROM dbo.Points;

x ve y özellikleri, sonuç küme görüntülenen bir tamsayı değer döndürür.

IDxValyVal
----------
134
215
3199

Deðiþkenlerle Çalýþmak

Değişkenleri bir udt türü bir değişkene atamak için declare deyim kullanarak çalışabilirsiniz.Aþaðýdaki ifadeleri kullanarak bir değer atamak Transact-SQL deyim AYARLAMAK ve sonuçlar UDT's çağırarak görüntüleme ToString değişken yöntem:

DECLARE @PointValue Point;
SET @PointValue = (SELECT PointValue FROM dbo.Points
    WHERE ID = 2);
SELECT @PointValue.ToString() AS PointValue;

Sonuç küme bir değişken değeri görüntüler:

PointValue
----------
-1,5

Aşağıdaki Transact-SQL deyimleri select kullanarak aynı sonucu elde etmek için değişken atama set yerine:

DECLARE @PointValue Point;
SELECT @PointValue = PointValue FROM dbo.Points
    WHERE ID = 2;
SELECT @PointValue.ToString() AS PointValue;

Kendi set deyim için her değişken atama set sözdizimi gerektirir seçin, bir deyim içinde birden çok değişkenleri atamanıza olanak sağlarken, değişken atama için seçin ve set kullanarak arasındaki fark.

Verileri karşılaştırma

Karşılaştırma işleçleri, varsa sizin udt değerleri karşılaştırmak için kullandığınız küme IsByteOrdered özelliğine true WalkTree tanımlarkenDaha fazla bilgi için bkz: Bir kullanıcı tanımlı türü oluşturma.

SELECT ID, PointValue.ToString() AS Points 
FROM dbo.Points
WHERE PointValue > CONVERT(Point, '2,2');

udt ne olursa olsun, iç değerleri karşılaştırabilirsiniz IsByteOrdered değerler karşılaştırılabilir ayarı.Aşağıdaki Transact-SQL deyim x Y:'den büyük olduğu satırları seçer

SELECT ID, PointValue.ToString() AS PointValue 
FROM dbo.Points
WHERE PointValue.X < PointValue.Y;

Bu sorgu için eşleşen bir PointValue arar gösterildiği gibi değişkenleri ile karşılaştırma işleçleri de kullanabilirsiniz.

DECLARE @ComparePoint Point;
SET @ComparePoint = CONVERT(Point, '3,4');
SELECT ID, PointValue.ToString() AS MatchingPoint 
FROM dbo.Points
WHERE PointValue = @ComparePoint;

udt yöntemleri çağırma

Ayrıca sizin udt tanımlanan yöntemleri çağırmak Transact-SQL.The Point class contains three methods, Distance, DistanceFrom, and DistanceFromXY.Bu üç yöntemi tanımlayan kod listeleri için bkz: Kullanıcı tanımlı türler kodlama.

Aşağıdaki Transact-SQL deyim çağrıları PointValue.Distance yöntem:

SELECT ID, PointValue.X AS [Point.X], 
    PointValue.Y AS [Point.Y],
    PointValue.Distance() AS DistanceFromZero 
FROM dbo.Points;

sonuçlar görüntülenir mesafe sütun:

IDXYDistance
------------------------
1345
2155.09901951359278
319999.0050503762308

The DistanceFrom method takes an argument of Point data type, and displays the distance from the specified point to the PointValue:

SELECT ID, PointValue.ToString() AS Pnt,
   PointValue.DistanceFrom(CONVERT(Point, '1,99')) AS DistanceFromPoint
FROM dbo.Points;

sonuçlar sonuçlarnı görüntülemek DistanceFrom yöntem her satır için tablo:

ID PntDistanceFromPoint
---------------------
13,495.0210502993942
21,594
31,990

The DistanceFromXY method takes the points individually as arguments:

SELECT ID, PointValue.X as X, PointValue.Y as Y, 
PointValue.DistanceFromXY(1, 99) AS DistanceFromXY 
FROM dbo.Points

Sonuç küme aynıdır DistanceFrom yöntem.

udt sütunda veri güncelleştirme

udt verileri güncelleştirmek için sütun, kullanma Transact-SQL update deyim.udt yöntem nesnenin durumunu güncelleştirmek için de kullanılabilir.Aşağıdaki Transact-SQL deyim içinde tek bir satır güncelleştirir tablo:

UPDATE dbo.Points
SET PointValue = CAST('1,88' AS Point)
WHERE ID = 3

udt öğeleri ayrı ayrı da güncelleştirebilirsiniz.Aşağıdaki Transact-SQL deyim y koordinatı güncelleştirir:

UPDATE dbo.Points
SET PointValue.Y = 99
WHERE ID = 3

udt bayt sırası ile tanımlanmış ise küme için true, Transact-SQL değerlendirmek udt sütunda bir where yan tümce tümce tümce.

UPDATE dbo.Points
SET PointValue = '4,5'
WHERE PointValue = '3,4';

Kısıtlamaları güncelleştiriliyor

Aynı anda kullanarak birden çok özellikleri güncelleştirilemiyor Transact-SQL.Örneğin, aşağıdaki güncelleştirme deyimini bir udate deyim içinde aynı sütun adını kullanamazsınız çünkü bir hata ile başarısız olur.

UPDATE dbo.Points
SET PointValue.X = 5, PointValue.Y = 99
WHERE ID = 3

Kapıda tek tek, sizin içinde noktası udt mutator yöntem oluşturmak güncellemeniz gerekir derleme.Sonra nesneyi güncelleştirmek için mutator yöntem çağırma bir Transact-SQL update deyim, aşağıdaki gibi:

UPDATE dbo.Points
SET PointValue.SetXY(5, 99)
WHERE ID = 3

udt sütunda veri silme

udt veri silmek için kullanın Transact-SQL delete deyim.Aşağıdaki deyim tüm satırları siler tablo where yan tümce tümce tümcesinde belirtilen ölçütlere uyan tümce tümce.delete deyim içindeki where yan tümce tümce tümce kullanmazsanız, tüm satırlar içinde tablo silinir.

DELETE FROM dbo.Points
WHERE PointValue = CAST('1,99' AS Point)

update deyim içinde bir udt değerleri kaldırmak istiyorsanız kullanın sütun diğer satır değerlerini dokunmadan oluştu.Bu örnek PointValue null olarak ayarlar.

UPDATE dbo.Points
SET PointValue = null
WHERE ID = 2