Udostępnij za pośrednictwem


Wykonywanie operacji na typy zdefiniowane przez użytkownika

Można wykonywać różne operacje na wystąpień typów zdefiniowanych przez użytkownika.Operacje te obejmują:

  • Wywoływanie metod lub pobierania właściwości typ zdefiniowany przez użytkownika.

  • Podczas konwersji typów danych wydajności.

  • Zwracanie wartości typ zdefiniowany przez użytkownika do klient programu SQL.

  • Za pomocą klauzul ORDER BY.

  • Tworzenie indeksów w kolumnach typ zdefiniowany przez użytkownika.

  • Tworzenie obliczona kolumn.

Wywoływanie metody lub właściwości zdefiniowane przez użytkownika typów pobieranie

Można wywołać metoda lub pobrać właściwość typ zdefiniowany przez użytkownika, w dowolnej lokalizacji wartość skalarna wyrażenie mogą być wyświetlane.Musisz mieć uprawnienie wykonać typu.Metody, które zmieniają stan danych poza instrukcja UPDATE zostanie wykonana, ale zmiany zostaną zignorowane, ponieważ metody mutable nie są dozwolone w kwerendach.

Ciągi, które są zwracane przez typ zdefiniowany przez użytkownika metody założono sortowanie bazy danych, w którym ten typ zdefiniowany przez użytkownika został utworzony, niezależnie od bieżącej bazy danych.

Ostrzeżenie

Metody i właściwości, które są używane w instrukcji SELECT, nie może mieć skutki uboczne.Jeśli metoda używana w instrukcja SELECT efekty uboczne, wyniki nie są deterministyczny.

Ostrzeżenie

Gdy wywołania metoda lub właściwość względem typów zdefiniowanych przez użytkownika, którego kolumny obliczane są tworzone i wywołanie występuje w odniesieniu do operacji na kolumna obliczana, uprawnienia wykonać typu nie są sprawdzane.Zamiast tego uprawnienia są sprawdzane podczas tworzenia kolumna obliczana.

Aby wywołać metoda lub pobrać właściwość typ zdefiniowany przez użytkownika

Uwaga

SQL Server Management Studio Zwraca typ zdefiniowany przez użytkownika wartości reprezentacja binarna.Aby zwracać wartości typ zdefiniowany przez użytkownika w formacie XML lub ciąg znaków, należy użyć CAST lub CONVERT.

Wykonywanie Data Type Conversions z typy zdefiniowane przez użytkownika

Niejawne i jawne konwersji typów zdefiniowanych przez użytkownika można wykonywać jako podsumowane w poniższej tabela.

 

ABY:

Typ zdefiniowany przez użytkownika

Binary

nvarchar

XML

OD:

Typ zdefiniowany przez użytkownika

 

Jawne

Jawne

Niejawna

Binary

Niejawna

 

 

 

nvarchar

Niejawna

 

 

 

XML

Niejawna

 

 

 

W poniższym przykładzie jawnie konwertuje wystąpienie typ zdefiniowany przez użytkownika ComplexNumber Aby xml i wywołuje wyrażenie XQuery nad nim.

DECLARE @c ComplexNumber
SET @c = CONVERT(ComplexNumber, '(1,2i)')
SELECT CAST(@c AS xml).query('//Real/text()')

W poniższym przykładzie niejawnie konwertuje. xml dane wystąpienie obiektu typ zdefiniowany przez użytkownika ComplexNumber.

DECLARE @x xml, @u ComplexNumber
SET @x = '<ComplexNumber><Real>100</Real><Imaginary>4</Imaginary></ComplexNumber>'
SET @u = @x -- implicit convert
SELECT @u.ToString()

Aby uzyskać więcej informacji zobaczCAST and CONVERT (Transact-SQL).

Zwracanie wartości typ zdefiniowany przez użytkownika do klient SQL

Jeśli kolumna lub wyrażenie typ zdefiniowany przez użytkownika jest zwracany do klienta SQL programu SELECT lub instrukcja pobrania, sposób klient interfejsu API uzyskuje dostęp do kolumna zależy od tego, czy interfejs API klienta jest zarządzanym API (ADO.NET) lub interfejs API niezarządzanego (ODBC lub OLE DB).Jeśli klient używa ADO.NET, klient może pobrać wystąpienie typu jako wartość binarna przy użyciu GetValue Metoda SqlDataReader klasy, lub jako obiekt. Jeśli klient używa OLE DB, klient otrzyma wartości typ zdefiniowany przez użytkownika jako wartość binarna.Jeśli klient korzysta z ODBC, klient otrzyma wartość typ zdefiniowany przez użytkownika jako wartość binarna tylko.

ORDER BY, GROUP BY i klauzul BY PARTITION przy użyciu typy zdefiniowane przez użytkownika

Można wykonywać operacje ORDER BY, GROUP BY i PARTITION BY w przypadku typów zdefiniowanych przez użytkownika, jeżeli typ obsługuje binarne kolejności.Typ jest binarne zamówione, jeśli ma on IsByteOrdered flagi jest ustawiona na wartość true w SqlUserDefinedType atrybut, który jest określony jako część definicji typu. Ta flaga wskazuje, że reprezentacja binarna dla tego typu jest w kolejności semantycznie prawidłowy dla tego typu.

Tworzenie indeksów w kolumnach typ zdefiniowany przez użytkownika

Jeżeli typ obsługuje kolejności binarne, można tworzyć indeksy na kolumny typ zdefiniowany przez użytkownika.Tak długo, jak metoda są oznaczone deterministyczny, można również tworzyć indeksy na kolumna obliczane, które są zdefiniowane jako wywołania metoda poza kolumną typ zdefiniowany przez użytkownika.Aby uzyskać więcej informacji zobaczŚrodowisko CLR Typy definiowane przez użytkownika.