Transact-SQL
| Lenguaje de programación Transact-SQL | |
|---|---|
| Autor | Microsoft , Sybase |
| Paradigmas | programación procedimental |
En informática, Transact-SQL (a veces abreviado como T-SQL ) es la extensión propietaria del lenguaje SQL desarrollado por Microsoft y Sybase . La versión de Microsoft viene con Microsoft SQL Server , mientras que Sybase usa este lenguaje en Adaptive Server Enterprise , el sucesor de Sybase SQL Server .
Expanda el rendimiento de SQL agregando:
- funciones de control de flujo ;
- Capacidad para definir variables locales .
- Varias funciones para la manipulación de cadenas , fechas, expresiones matemáticas.
- Instrucciones DELETE y UPDATE mejoradas .
Control de flujo y estructura del lenguaje
Las palabras clave con las que Transact - SQL
implementa el control de flujo incluyen BEGINe END,,, y BREAK,, y .CONTINUEGOTOIFELSERETURNWAITFORWHILE
IFy permitir la ELSEejecución condicional de bloques de instrucciones. El lote que sigue imprime "día festivo" si la fecha actual es sábado o domingo, o "día de la semana" en caso contrario.
SI DATEPART (dw, GETDATE ()) = 7 O DATEPART (dw, GETDATE ()) = 1 IMPRIMIR 'Es un día festivo.' MÁS IMPRIMIR 'Es un día de semana.'
BEGINy ENDdelimitar un bloque de instrucciones. Si es necesario controlar varias declaraciones mediante las condiciones que se muestran en el ejemplo anterior, podemos usar BEGIN y END de esta manera:
SI DATEPART (dw, GETDATE ()) = 7 O DATEPART (dw, GETDATE ()) = 1 EMPEZAR IMPRIMIR 'Es un día festivo.' IMPRIMIR '¡Tómate unas vacaciones!' FINAL MÁS EMPEZAR IMPRIMIR 'Es un día de semana.' IMPRIMIR '¡A trabajar!' FINAL
WAITFOResperar una cierta cantidad de tiempo, o hasta una cierta hora del día. Esta instrucción se puede utilizar para realizar acciones retrasadas o para bloquear la ejecución de una operación antes de llegar a un tiempo determinado.
RETURNse utiliza para salir inmediatamente de un procedimiento almacenado o de una determinada función.
BREAKhace que un bucle comience con a para salir WHILE, mientras CONTINUEejecuta el siguiente bucle en el bucle. A continuación se muestra un ejemplo de un bucle WHILE.
Variables locales
Las variables locales son accesibles solo para el script que las usa. Transact-SQL no admite variables globales definidas por el usuario.
DECLAREdeclara una variable, dándole un nombre y un tipo. Para darle un valor se usa SET, y posteriormente se puede usar la variable usando su nombre como referencia.
Este script declara una variable como un número entero, la inicializa y luego usa un WHILEbucle to.
DECLARAR @Contador INT SET @Contador = 10 MIENTRAS @Contador> 0 EMPEZAR IMPRIMIR 'Número de ciclos:' + CONVERTIR (VARCHAR (10), @Contador) SET @Contador = @Contador - 1 FINAL
Dentro del bucle, se imprime un mensaje que incluye el valor actual de la variable, después de lo cual el contador se decrementa en uno.
Una variable también se puede inicializar directamente como resultado de una declaración:
DECLARAR @ContaArticoli INT SELECT @ContaArticoli = COUNT (*) DE Artículos INSERTAR EN SizeLog (VerificationTime, ArticleCount) VALORES (GETDATE(), @ContaArticoli)
Aquí, por ejemplo, se lee el número de filas contenidas en la tabla 'Artículos', luego se agrega una fila que contiene el número de filas y la hora actual a la tabla 'SizeLog'.
Instrucciones extendidas DELETE y UPDATE
En Transact-SQL, se puede agregar una opción a las instrucciones DELETE y UPDATE FROMque permite vincular a otras tablas mediante un archivo JOIN. En el siguiente ejemplo, se eliminan todos los registros de la tabla 'Usuarios' que se han marcado con el indicador 'Inactivo'.
ELIMINAR Usuarios
DE Usuarios como tú
ÚNETE Users_flags como f
ON u.id = f.id
WHERE f.nombre = 'Inactivo'
Críticas
Según los críticos, las nuevas características de Transact-SQL no solo rompen la compatibilidad con el lenguaje SQL estándar, sino que también contradicen la suposición de que SQL está diseñado para ser un lenguaje declarativo (como lo era en realidad, al menos hasta la versión estándar). 1999 de SQL ). En otras palabras, las características adicionales de Transact-SQL se habrían implementado introduciendo un lenguaje realmente nuevo de tipo imperativo , con una solución confusa y poco lineal, cuando en cambio, según los críticos, se podrían haber implementado las mismas características. usando otra capa de programación, o usando el mismo SQL.
Artículos relacionados
Enlaces externos
- ( EN ) Referencia de Transact-SQL para SQL Server 2000 (MSDN) , en msdn2.microsoft.com .
- ( EN ) Referencia de Transact-SQL para SQL Server 2005 (MSDN) , en msdn2.microsoft.com .
- ( EN ) Manual de referencia de ASE , en manuals.sybase.com . Consultado el 14 de diciembre de 2007 (archivado desde el original el 10 de agosto de 2007) .
- ( EN ) Referencia rápida de DevGuru T-SQL , en devguru.com . Consultado el 14 de diciembre de 2007 (archivado desde el original el 13 de julio de 2007) .