Udostępnij za pośrednictwem


Manipulowania danymi UDT

Transact-SQL Podczas modyfikowania danych w kolumnach typ zdefiniowany przez użytkownika (UDT) zapewnia nie specjalnych składni instrukcji INSERT, UPDATE lub DELETE. Transact-SQL Funkcje RZUTOWANIA lub konwersji są używane do oddania macierzyste typy danych na typ UDT.

Wstawianie danych w kolumnie UDT

Następujące Transact-SQL instrukcji Wstaw trzy wiersze danych przykładowych do punktów tabela.Punkt typ danych składa się z x i y całkowitej wartości, które są dostępne jako właściwości UDT.Należy użyć funkcja RZUTOWANIA lub konwersji do oddania rozdzielany przecinkami wartości x i y punkt typu.Pierwsze dwa sprawozdania funkcja CONVERT do konwersji wartości ciąg na punkt typ, 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));

Wybieranie danych

Poniższa instrukcja SELECT wybiera wartość binarna UDT.

SELECT ID, PointValue FROM dbo.Points

Aby zobaczyć wyniki wyświetlane w formacie czytelnym, call ToString metoda punkt UDT, która konwertuje wartość na jej reprezentację ciąg.

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

Generuje następujące wyniki.

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

Można również użyć Transact-SQL ODDANYCH i KONWERTOWAĆ funkcji, aby osiągnąć te same wyniki.

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

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

Punkt UDT uwidacznia współrzędnych x i Y, jak właściwości, które można wybrać indywidualnie.Następujące 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 wyowietlana zestaw wyników.

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

Praca z zmiennych

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

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

Zestaw wyników zawiera wartości zmiennej:

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

Następujące Transact-SQL instrukcji osiągnąć to samo używanie wybierz zamiast przypisania zmiennej:

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

Różnica między przypisanie zmiennej jest, że wybór pozwala przypisać wiele zmiennych w jednej instrukcja SELECT składni zestawu wymaga każde przypisanie zmiennej ma swój własny zestaw instrukcja SELECT i zestaw.

Porównywanie danych

Można używać operatorów porównania do porównywania wartości w sieci UDT, jeśli masz zestaw IsByteOrdered Właściwość true podczas definiowania, klasaAby uzyskać więcej informacji, zobacz Tworzenie typ zdefiniowany przez użytkownika.

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

Można porównywać wartości wewnętrznego UDT niezależnie od IsByteOrdered Ustawienia, jeśli same wartości są porównywalne.Następujące Transact-SQL instrukcja wybiera wiersze, gdzie x jest większa 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 w tej kwerendzie, 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 metod UDT

Można również wywoływać metody, które są zdefiniowane w sieci UDT w Transact-SQL.Punkt klasa zawiera trzy metody Distance, DistanceFrom, i DistanceFromXY.Dla tych trzech metod definiowania fragmentów kodu, zobacz Kodowanie typów zdefiniowanych przez użytkownika.

Następujące 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

DistanceFrom Metoda wymaga argumentu pkt typ danych i wyświetla odległość od określonego punktu PointValue:

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

Wyniki są wyświetlane wyniki DistanceFrom metoda dla każdego wiersza w tabela:

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

DistanceFromXY Metoda zajmuje punkty indywidualnie jako argumenty:

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

Zestaw wyników jest taki sam, jak DistanceFrom metoda.

Aktualizowanie danych w kolumnie UDT

Aby zaktualizować dane kolumna UDT, użyj Transact-SQL Aktualizacja instrukcja.Za pomocą metoda UDT zaktualizować stan obiektu.Następujące Transact-SQL instrukcja aktualizacji jednego wiersza w tabela:

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

Można także zaktualizować elementy UDT oddzielnie.Następujące Transact-SQL instrukcja aktualizuje Współrzędna 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żna ocenić UDT kolumna w klauzula WHERE.

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

Aktualizowanie ograniczenia

Nie można zaktualizować wiele właściwości jednocześnie za pomocą Transact-SQL.Na przykład następującą instrukcję AKTUALIZUJĄCĄ nie działa z błędem, ponieważ nie można użyć tej samej nazwy kolumna dwukrotnie w jednej instrukcja UDATE.

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

Aby zaktualizować indywidualnie w każdym punkcie, trzeba utworzyć metoda mutator w UDT punkt wirtualny plik dziennika.Następnie można wywołać metoda mutator o aktualizację obiektu w Transact-SQL Instrukcja UPDATE, jak w następujących:

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

Usuwanie danych w kolumnie UDT

Służy do usuwania danych UDT, Transact-SQL usunąć 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)

Jeśli chcesz usunąć wartości kolumna UDT, pozostawiając inne wartości wiersza nienaruszony, należy użyć instrukcja UPDATE.PointValue przykładzie wartość null.

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