Blog de Consultec

En la primera parte de este artículo, se presentaron dos novedades sobre la nueva versión de Sql Server, centrando el análisis a  Transact Sql (T-SQL). Continuando con las novedades:

3. With Results Sets

La instrucción WITH RESULT SETS utilizada después de la ejecución de un procedimiento almacenado nos permite cambiar el nombre o el tipo de las columnas devueltas por el procedimiento. Hasta ahora si queríamos hacer esto teníamos que crear una tabla temporal o incluso a veces creábamos funciones tabulares porque estas nos permiten hacer directamente una select sobre ellas.

Ejemplo de uso de la instrucción WITH RESULTS SETS:

4. Manejo de excepciones con THROW

El manejo de errores era tedioso de implementar antes de la introducción del TRY/CATCH  con SQL Server 2005. Hasta entonces había que comprobar después de cada operación la variable @@ERROR para ver si se había producido algún error. Hasta SQL Server 2012, RAISEERROR es el único mecanismo para lanzar errores propios, pero tiene sus limitaciones: requiere utilizar un número de error existente en sys.messages, siempre genera una nueva excepción perdiendo la excepción original, etc. SQL Server 2012 introduce la instrucción THROW que permite lanzar excepciones de usuario. Además podemos utilizarlo dentro del CATCH para lanzar la excepción. Por tanto, algunas funcionalidades de RAISEERROR quedarán obsoletas con la aparición del THROW.

El id del mensaje no tiene que estar definido en sys.messages, aunque debe ir en el rango de 50.000-2.147.483.647:

Podemos lanzar la excepción dentro del CATCH:

No admite parámetros de sustitución como el RAISEERROR. Si queremos implementar esto, debemos añadir primero el mensaje a sys.messages y luego utilizarlo con la función FORMATMESSAGE:

5. Nuevas funciones

  • Concat: Permite concatenar dos o más valores juntos en una única cadena.

  • Format: Devuelve un valor formateado a FORMAT (valor, formato [, idioma])

  • Iif: La instrucción IIF es una forma reducida de escribir una condicional (if…else) en la que se devolverá un valor u otro en función de la expresión booleana definida.

  • Choose: La instrucción choose devuelve un elemento que está en una posición determinada de una lista de valores.

  • Try_convert: Intenta convertir el valor pasado a un tipo específico. Si la conversión funciona, devuelve el valor como un objeto del tipo especificado, en caso contrario, devuelve null.

Tags: ,

Enviar comentarios