close

Transact-SQL

Saltar a navegación Saltar a búsqueda
Lenguaje de programación Transact-SQL
AutorMicrosoft , Sybase
Paradigmasprogramació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