Usar y modificar instancias de tipos definidos por el usuario

Actualizado: 5 de diciembre de 2005

Puede trabajar con tipos definidos por el usuario de las siguientes maneras:

  • Crear tablas con columnas de tipos definidos por el usuario
  • Insertar y modificar valores de columnas de tipos definidos por el usuario
  • Usar un tipo definido por el usuario como variable o parámetro

Crear tablas que tienen columnas de tipos definidos por el usuario

Puede crear una tabla que tenga columnas de tipos definidos por el usuario proporcionando un nombre de columna y haciendo referencia al nombre del tipo. Se parece a la manera de crear columnas formadas por tipos de alias o tipos de datos basados en el sistema. Para crear una columna en un tipo definido por el usuario CLR (Common Language Runtime), debe tener el permiso REFERENCES en el tipo.

Para crear una tabla con columnas de tipos definidos por el usuario

Insertar y modificar valores de columnas de tipos definidos por el usuario

Puede insertar y modificar valores de columnas y cambiar los valores de las variables y parámetros de tipos definidos por el usuario.

[!NOTA] Los tipos definidos por el usuario no se pueden modificar una vez creados, ya que los cambios podrían invalidar los datos de las tablas o los índices. Para modificar un tipo, debe quitar el tipo y volver a crearlo, o bien emitir una instrucción ALTER ASSEMBLY utilizando la cláusula WITH UNCHECKED DATA. Para obtener más información, vea ALTER ASSEMBLY (Transact-SQL).

Puede insertar o modificar valores para columnas de tipos definidos por el usuario realizando lo siguiente:

  • Suministrar un valor en un tipo de datos del sistema de SQL Server, siempre y cuando el tipo definido por el usuario admita la conversión implícita o explícita desde ese tipo. En el ejemplo siguiente se muestra cómo actualizar un valor de una columna de tipo Point, definido por el usuario, mediante la conversión explícita de una cadena:

    UPDATE Cities
    SET Location = CONVERT(Point, '12.3:46.2')
    WHERE Name = 'Anchorage'
    
  • Invocar un método, marcado como mutador, del tipo definido por el usuario, para realizar la actualización. En el ejemplo siguiente se invoca un método mutador del tipo point denominado SetXY que actualiza el estado de la instancia del tipo:

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

    [!NOTA] SQL Server devuelve un error si se invoca un método mutador en un valor NULL de Transact-SQL, o si un nuevo valor producido por un método mutador es NULL.

  • Modificar el valor de una propiedad o campo público del tipo definido por el usuario. La expresión que suministra el valor se tiene que poder convertir implícitamente al tipo de la propiedad. En el ejemplo siguiente se modifica el valor de la propiedad X del tipo definido por el usuario point:

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

    Para modificar diferentes propiedades de la misma columna de tipo definido por el usuario, emita varias instrucciones UPDATE o invoque un método mutador del tipo.

En el siguiente ejemplo se insertan los valores de tipo Point en la tabla:

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

Para insertar un valor de tipo definido por el usuario en una tabla o vista

UPDATE (Transact-SQL)

Usar un tipo definido por el usuario como variable o parámetro

Puede declarar una variable Transact-SQL, o bien el parámetro de una función o procedimiento Transact-SQL o Microsoft .NET Framework, para que sea de un tipo definido por el usuario. Se aplican las reglas siguientes:

  • Debe tener permisos EXECUTE en el tipo.
  • Si crea una función, procedimiento almacenado o desencadenador que contenga una declaración de tipo definido por el usuario con enlace de esquema, debe tener permisos REFERENCES para el tipo.

Si utiliza un nombre de una parte, SQL Server buscará la referencia del tipo en el orden siguiente:

  1. El esquema del usuario actual en la base de datos actual.
  2. El esquema de dbo en la base de datos actual.
  3. El espacio del tipo nativo del sistema.

Para declarar un tipo definido por el usuario como una variable o parámetro Transact-SQL de una función o procedimiento

Restricciones sobre el uso de los tipos definidos por el usuario

Cuando cree y trabaje con tipos definidos por el usuario, tenga en cuenta lo siguiente:

  • No puede definir la longitud, la escala, la precisión u otros metadatos al crear un tipo definido por el usuario en SQL Server.
  • No se puede declarar que una columna, variable o parámetro sea de un tipo definido por el usuario que se haya definido en otra base de datos. Para obtener más información, vea Usar tipos definidos por el usuario en varias bases de datos.
  • Para determinar si un tipo definido por el usuario es idéntico a uno ya definido, no compare el Id. del tipo, porque éste sólo es válido durante la existencia del tipo definido por el usuario y se puede reclamar. En vez de esto, compare el nombre del tipo CLR, el nombre del ensamblado de cuatro partes y los bytes del ensamblado.
  • Las columnas sql_variant no pueden contener instancias de un tipo definido por el usuario.
  • Los tipos definidos por el usuario no se pueden utilizar como valores predeterminados en desencadenadores, funciones o procedimientos CLR, ni en funciones de partición.
  • No se puede hacer referencia a los tipos definidos por el usuario en columnas calculadas de variables de table.

Vea también

Conceptos

Trabajar con tipos definidos por el usuario para CLR

Otros recursos

CLR User-Defined Types

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

5 de diciembre de 2005

Contenido nuevo:
  • En la sección "Restricciones sobre el uso de los tipos definidos por el usuario", se agregó que no se puede hacer referencia a los tipos definidos por el usuario en columnas calculadas de variables de table.