Udostępnij za pośrednictwem


Używanie i modyfikowanie wystąpień typów zdefiniowanych przez użytkownika

Typy zdefiniowane przez użytkownika można pracować w następujący sposób:

  • Tworzenie tabel z kolumny typ zdefiniowany przez użytkownika

  • Wstawianie i modyfikowanie wartości kolumna Typ zdefiniowany przez użytkownika

  • Używanie typ zdefiniowany przez użytkownika jako zmienna lub parametr

Tworzenie tabel, które mają kolumny Typ danych zdefiniowany przez użytkownika

Można utworzyć tabela zawierającej kolumna typ zdefiniowany przez użytkownika przez podanie nazwy kolumn i odwoływania się do nazwy typu.Przypomina to sposób tworzenia kolumn, które składają się z typów danych opartych na systemie lub alias.Aby utworzyć kolumna na common language runtime (CLR) typ zdefiniowany przez użytkownika, musisz mieć uprawnienie odwołania typu.

Aby utworzyć tabela z kolumny typ zdefiniowany przez użytkownika

Wstawianie i modyfikowanie wartości w kolumnie Typ zdefiniowany przez użytkownika

Można wstawiać i modyfikować wartości kolumna i zmieniać wartości zmiennych typ zdefiniowany przez użytkownika i parametry.

Ostrzeżenie

Typów zdefiniowanych przez użytkownika nie można modyfikować po ich utworzeniu, ponieważ zmiany mogłyby unieważnić dane w tabelach lub indeksy.Aby zmodyfikować typ, musisz upuść typu i następnie odtworzyć go lub wydawania instrukcja ALTER zestawu przy użyciu klauzula Z NIEZAZNACZONE danych.Aby uzyskać więcej informacji, zobacz Zmiana zestawu (Transact-SQL).

Można wstawić lub zmodyfikować wartości dla kolumn typ zdefiniowany przez użytkownika, wykonując następujące czynności:

  • Podanie wartości w SQL Server Typ danych systemu, jak typ zdefiniowany przez użytkownika obsługuje bezpośrednia lub pośrednia konwersja z tego typu.Poniższy przykład ilustruje sposób aktualizacji wartości kolumna Typ zdefiniowany przez użytkownika Point przez jawne konwertowanie z ciąg:

    UPDATE Cities
    SET Location = CONVERT(Point, '12.3:46.2')
    WHERE Name = 'Anchorage'
    
  • Wywoływanie metoda oznaczone jako mutator, z typ zdefiniowany przez użytkownika, aby wykonać aktualizację.Poniższy przykład wywołuje metoda mutator typu pkt o nazwie SetXY , aktualizuje stan wystąpienie typu:

    UPDATE Cities
    SET Location.SetXY(23.5, 23.5)
    WHERE Name = 'Anchorage'
    

    Ostrzeżenie

    SQL ServerZwraca błąd, jeśli mutator wywoływana jest metoda Transact-SQL wartość null lub nową wartość produkowane przez mutator metody jest null.

  • Modyfikowanie wartości właściwość lub publicznych pole Typ zdefiniowany przez użytkownika.Wyrażenie, które dostarcza wartość musi być jawnie konwertowany na typ właściwość.Poniższy przykład modyfikuje wartość właściwość X z typ zdefiniowany przez użytkownika pkt:

    UPDATE Cities
    SET Location.X = 23.5
    WHERE Name = 'Anchorage'
    

    Aby zmodyfikować inne właściwości tej samej kolumna typ zdefiniowany przez użytkownika, wydawania wielu instrukcji UPDATE lub wywołać mutator metoda typu.

Poniższy przykład wstawia wartości typu Point do tabela:

INSERT INTO Cities (Name, Location)
VALUES ('Anchorage', CONVERT(Point, '23.5, 23.5'))

Aby wstawić wartość typ zdefiniowany przez użytkownika do tabela lub widoku

  • INSERT (Transact-SQL)

  • Aby zaktualizować wartość typ zdefiniowany przez użytkownika do tabela lub widoku

UPDATE (Transact-SQL)

Używanie typ zdefiniowany przez użytkownika jako zmienna lub parametr

You can declare a Transact-SQL variable, or the parameter of a Transact-SQL or Microsoft .NET Framework function or procedure, to be of a user-defined type.Obowiązują następujące reguły:

  • Musi mieć uprawnienie EXECUTE do typu.

  • Jeśli tworzysz funkcja, procedura składowana lub wyzwalacz, który zawiera typ zdefiniowany przez użytkownika deklaracja powiązanie schematu, musisz mieć uprawnienie odwołania typu.

Jeśli używasz nazwy jednej części, SQL Server przeszukuje odwołanie do typu w następującej kolejności:

  1. Schemat bieżącego użytkownika w bieżącej bazie danych.

  2. Schemat dbo w bieżącej bazie danych.

  3. Typ macierzysty system-miejsce.

Aby zadeklarować typ zdefiniowany przez użytkownika jako zmienna języka Transact-SQL lub parametr funkcja lub procedury

Ograniczenia dotyczące korzystania z typów zdefiniowanych przez użytkownika

Podczas tworzenia i pracy z typów zdefiniowanych przez użytkownika, należy rozważyć następujące kwestie:

  • Nie można zdefiniować długość, skalę, precyzji i inne metadane podczas tworzenia typ zdefiniowany przez użytkownika w SQL Server.

  • kolumna, zmiennej lub parametru nie można zadeklarować typ zdefiniowany przez użytkownika, który jest zdefiniowany w innej bazie danych.Aby uzyskać więcej informacji, zobacz Za pomocą typów zdefiniowanych przez użytkownika w różnych bazach danych.

  • Aby ustalić, czy typ zdefiniowany przez użytkownika jest taka sama, jak wcześniej zdefiniowana, porównuje identyfikator typu, ponieważ jest prawidłowe tylko dla życia typ zdefiniowany przez użytkownika i mogą być odzyskane.Zamiast tego należy porównać nazwę typu CLR, nazwa wirtualny plik dziennika czteroczęściowym i bajtów wirtualny plik dziennika.

  • sql_variant kolumn nie może zawierać wystąpienia typ zdefiniowany przez użytkownika.

  • Typów zdefiniowanych przez użytkownika nie można używać jako wartości domyślne w CLR procedury, funkcji i wyzwalaczy lub w funkcji partycji.

  • Typów zdefiniowanych przez użytkownika nie mogą odwoływać się do kolumn obliczanych table zmiennych.