Compartilhar via


Usando e modificando instâncias de tipos definidos pelo usuário

Você pode trabalhar com tipos definidos pelo usuário dos seguintes modos:

  • Criando tabelas com colunas de tipo definidas pelo usuário

  • Inserindo e modificando valores de coluna do tipo definido pelo usuário

  • Usando um tipo definido pelo usuário como uma variável ou parâmetro

Criando tabelas que têm colunas do tipo definido pelo usuário

Você pode criar uma tabela que possui colunas do tipo definido pelo usuário fornecendo um nome de coluna e referenciando o nome do tipo. Isso é semelhante ao modo de se criar colunas compostas de tipos de dados baseados no sistema ou tipos de alias. Para criar uma coluna criados em CLR (Common Language Runtime) do tipo definido pelo usuário, você deve ter a permissão REFERENCES para o tipo.

Para criar uma tabela com colunas do tipo definidas pelo usuário

Inserindo e modificando valores de coluna do tipo definido pelo usuário

Você pode inserir e modificar valores de coluna e alterar os valores de variáveis e parâmetros do tipo definido pelo usuário.

ObservaçãoObservação

Os tipos definidos pelo usuário não podem ser modificados depois de criados, porque as alterações podem invalidar dados em tabelas ou índices. Para modificar um tipo, é necessário descartar o tipo e recriá-lo em seguida, ou emitir uma instrução ALTER ASSEMBLY, usando a cláusula WITH UNCHECKED DATA. Para obter mais informações, consulte ALTER ASSEMBLY (Transact-SQL).

Você pode inserir ou pode modificar valores para colunas do tipo definidas pelo usuário fazendo o seguinte:

  • Fornecendo um valor em um tipo de dados do sistema do SQL Server, contanto que o tipo definido pelo usuário ofereça suporte para a conversão implícita ou explícita do referido tipo. O exemplo a seguir mostra como atualizar um valor em uma coluna do tipo definido pelo usuário Point convertendo explicitamente de uma cadeia de caracteres:

    UPDATE Cities
    SET Location = CONVERT(Point, '12.3:46.2')
    WHERE Name = 'Anchorage'
    
  • Invocando um método, marcado como um modificador, do tipo definido pelo usuário, para executar a atualização. O exemplo a seguir invoca um método modificador do tipo ponto chamado SetXY, que atualiza o estado da instância do tipo:

    UPDATE Cities
    SET Location.SetXY(23.5, 23.5)
    WHERE Name = 'Anchorage'
    
    ObservaçãoObservação

    O SQL Server retorna um erro se um método modificador for invocado com um valor Transact-SQL nulo, ou se um novo valor produzido por um método modificador for nulo.

  • Modificando o valor de uma propriedade ou campo público do tipo definido pelo usuário. A expressão que fornece o valor deve ser implicitamente conversível para o tipo da propriedade. O exemplo a seguir modifica o valor de propriedade X do ponto de tipo definido pelo usuário:

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

    Para modificar propriedades diferentes da mesma coluna do tipo definido pelo usuário, emita diversas instruções UPDATE, ou invoque um método do tipo muodificador.

O exemplo a seguir insere valores de tipo Point na tabela:

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

Para inserir um valor de tipo definido pelo usuário em uma tabela ou exibição

  • INSERT (Transact-SQL)

  • Para atualizar um valor do tipo definido pelo usuário em uma tabela ou exibição

UPDATE (Transact-SQL)

Usando um tipo definido pelo usuário como uma variável ou parâmetro

Você pode declarar que uma variável Transact-SQL, ou o parâmetro de uma Transact-SQL, ou uma função ou procedimento do Microsoft.NET Framework deverá ser do tipo definido pelo usuário. As seguintes regras se aplicam:

  • Você deve ter permissão EXECUTE sobre o tipo.

  • Se você criar uma função, um procedimento armazenado ou um gatilho que contenha uma declaração do tipo definido pelo usuário com associação de esquema, você deverá ter a permissão REFERENCES sobre o tipo.

Se você usar um nome de uma parte, o SQL Server procurará a referência do tipo na seguinte ordem:

  1. O esquema do usuário atual no banco de dados atual.

  2. O esquema do dbo no banco de dados atual.

  3. O espaço tipo nativo do sistema.

Para declarar um tipo definido pelo usuário como uma variável ou parâmetro Transact-SQL de uma função ou procedimento

Restrições sobre o uso de tipos definidos pelo usuário

Ao criar e trabalhar com tipos definidos pelo usuário, considere o seguinte:

  • Você não pode definir a extensão, escala, precisão ou outros metadados ao criar um tipo definido pelo usuário no SQL Server.

  • Uma coluna, variável, ou parâmetro não pode ser declarado como do tipo definido pelo usuário que estiver definido em outro banco de dados. Para obter mais informações, consulte Usando tipos definidos pelo usuário por Bancos de Dados.

  • Para determinar se um tipo definido pelo usuário é idêntico a um definido anteriormente, não compare a ID de tipo, porque ela é válida somente pela duração do tipo definido pelo usuário e pode ser recuperada. Em lugar disso, compare o nome do tipo de CLR, o nome de assembly de quatro partes e os bytes do assembly.

  • As colunas de sql_variant não podem conter instâncias de um tipo definido pelo usuário.

  • Os tipos definidos pelo usuário não podem ser usados como valores padrão em procedimentos, funções ou gatilhos CLR, nem em função de partição.

  • Os tipos definidos pelo usuário não podem ser referenciados em colunas computadas de variáveis table.