Udostępnij przez


Manipulowanie UDT danych

Transact-SQL Podczas modyfikowania danych w kolumnach typ zdefiniowany przez użytkownika (UDT) zapewnia nie specjalnych składni instrukcji INSERT, UPDATE lub DELETE.The Transact-SQL CAST or CONVERT functions are used to cast native data types to the UDT type.

Wstawianie danych kolumna UDT

Poniżej Transact-SQL instrukcje wstawić trzy wiersze danych przykładowych do Punkty tabela.The Point data type consists of X and Y integer values that are exposed as properties of the UDT.Należy użyć funkcja CAST albo CONVERT oddać rozdzielaną przecinkami wartości X i Y do Punkt typu.Pierwsze dwie instrukcje za pomocą funkcji konwersji do konwersji wartości ciąg na Punkt typu, a trzecia instrukcja funkcja CAST:

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));

Zaznaczanie danych

Następującą instrukcję WYBIERAJĄCĄ wybiera wartość binarna UDT.

SELECT ID, PointValue FROM dbo.Points

Aby wyświetlić dane wyjściowe w formacie czytelnym wyświetlane, wywołaj ToString Metoda Punkt UDT, które konwertuje wartość na jej reprezentację ciąg.

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

Powoduje to następujące wyniki.

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

Można również użyć Transact-SQL LANE i CONVERT funkcji w celu uzyskania takich samych wyniki.

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.Poniżej Transact-SQL instrukcja wybiera współrzędne X i Y oddzielnie:

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

Właściwości X i Y zwraca wartość całkowitą, która jest wyświetlana zestaw wyników.

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

Praca z zmienne

Można pracować ze zmiennymi za pomocą instrukcja DECLARE przypisać do zmiennej typu UDT.Poniższe instrukcje przypisać wartości za pomocą Transact-SQL Instrukcja zestaw i wyświetlić wyniki, wywołując UDT firmy ToString metoda dla zmiennej:

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

Zestaw wyników zawiera wartość zmiennej:

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

Poniżej Transact-SQL instrukcje uzyskać ten sam efekt, za pomocą SELECT zamiast zestaw dla przypisania zmiennych:

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

Różnica między używaniem SELECT i zestaw dla przypisania zmiennej jest, że SELECT umożliwia przypisywanie wielu zmiennych w instrukcji SELECT jeden, składnia zestaw wymaga każdego przypisania zmiennej mają swoje własne instrukcja zestaw.

Porównywanie danych

Można używać operatorów porównania do porównywania wartości w sieci UDT, jeśli została wybrana opcja IsByteOrdered Właściwość true przy definiowaniu tej klasy. Aby uzyskać więcej informacji zobaczTworzenie typ zdefiniowany przez użytkownika.

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

Można porównać wewnętrznego wartości UDT bez względu na to IsByteOrdered ustawienia, jeśli wartości same są porównywalne. Poniżej Transact-SQL instrukcja wybiera wiersze, gdzie X jest większe niż Y:

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

Umożliwia także operatory porównania ze zmiennymi, jak pokazano na tę kwerendę, która wyszukuje pasujące PointValue.

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

Wywoływanie metody UDT

Można również wywoływać metody, które są zdefiniowane w sieci UDT w Transact-SQL. The Point class contains three methods, Distance, DistanceFrom, and DistanceFromXY.Aby listingi tych trzech metod definiowania zobacz Kodowanie Typy definiowane przez użytkownika.

Poniżej Transact-SQL Instrukcja wywołania PointValue.Distance Metoda:

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

Wyniki są wyświetlane w Odległość kolumna:

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

The DistanceFrom metoda 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;

Wyniki wyświetlane wyniki DistanceFrom Metoda dla każdego wiersza w tabela:

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

The DistanceFromXY metoda 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

Zestaw wyników jest taka sama, jak DistanceFrom Metoda.

Aktualizowanie danych kolumna UDT

Aby zaktualizować dane kolumna UDT, należy użyć Transact-SQL Instrukcja UPDATE. Metoda UDT służy także do aktualizowania stanu obiektu.Poniżej Transact-SQL Instrukcja aktualizuje jeden wiersz w tabela:

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

Elementy UDT można też aktualizować osobno.Poniżej Transact-SQL Instrukcja aktualizuje tylko współrzędną Y:

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

Jeśli zdefiniowano UDT z kolejności bajtów zestaw do true, Transact-SQL może służyć do oceny UDT kolumna w klauzula WHERE.

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

Aktualizowanie ograniczenia

Nie można zaktualizować wielu właściwości naraz przy użyciu Transact-SQL. Na przykład następującą instrukcję AKTUALIZUJĄCĄ nie działa z powodu błędu, ponieważ nie można używać dwukrotnie w jednej instrukcja UDATE taką samą nazwę kolumna.

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

Aby zaktualizować osobno każdego punktu, należy utworzyć metoda mutator w zestawie UDT punktu.Następnie można wywołać metoda mutator zaktualizować obiekt w Transact-SQL Instrukcja UPDATE, jak w następujących czynności:

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

Usuwanie danych kolumna UDT

Aby usunąć dane w UDT, należy użyć Transact-SQL DELETE instrukcja. Poniższa instrukcja powoduje usunięcie wszystkich wierszy w tabela, które spełniają kryteria określone w klauzula WHERE.Jeżeli pominięto klauzula WHERE w instrukcja DELETE zostaną usunięte wszystkie wiersze w tabela.

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

Instrukcja UPDATE należy używać, jeśli chcesz usunąć wartości kolumna UDT, pozostawiając inne wartości wiersza nienaruszony.Ten przykład przedstawia PointValue null.

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