stringtranslate.com

Transact-SQL

Transact-SQL ( T-SQL ) es una extensión patentada de Microsoft y Sybase del lenguaje SQL (lenguaje de consulta estructurado) que se utiliza para interactuar con bases de datos relacionales . T-SQL amplía el estándar SQL para incluir programación procedimental , variables locales , varias funciones de soporte para procesamiento de cadenas, procesamiento de fechas, matemáticas, etc. y cambios en las instrucciones DELETE y UPDATE .

Transact-SQL es fundamental para el uso de Microsoft SQL Server . Todas las aplicaciones que se comunican con una instancia de SQL Server lo hacen enviando instrucciones Transact-SQL al servidor, independientemente de la interfaz de usuario de la aplicación.

Los procedimientos almacenados en SQL Server son rutinas ejecutables del lado del servidor. La ventaja de los procedimientos almacenados es la capacidad de pasar parámetros.

Variables

Transact-SQL proporciona las siguientes instrucciones para declarar y establecer variables locales: DECLARE, SETy SELECT.

DECLARE @var1 NVARCHAR ( 30 ); SET @var1 = 'Algún nombre' ; SELECT @var1 = Nombre FROM Ventas . Tienda WHERE CustomerID = 100 ;              

Control de flujo

Las palabras clave para el control de flujo en Transact-SQL incluyen BEGINy END, BREAK, CONTINUE, GOTO, IFy ELSE, RETURN, WAITFORy WHILE.

IFy ELSEpermitir la ejecución condicional. Esta instrucción por lotes imprimirá "Es fin de semana" si la fecha actual es un día de fin de semana, o "Es un día laborable" si la fecha actual es un día laborable. (Nota: Este código supone que el domingo está configurado como el primer día de la semana en la @@DATEFIRSTconfiguración).

SI DATEPART ( dw , GETDATE ()) = 7 O DATEPART ( dw , GETDATE ()) = 1 IMPRIMIR 'Es fin de semana.' ; DE LO CONTRARIO IMPRIMIR 'Es un día laborable.' ;             

BEGINy ENDmarcar un bloque de declaraciones . Si más de una declaración debe ser controlada por la condición en el ejemplo anterior, podemos usar BEGINy ENDde esta manera:

SI DATEPART ( dw , GETDATE ()) = 7 O DATEPART ( dw , GETDATE ()) = 1 BEGIN PRINT 'Es fin de semana.' ; PRINT '¡Descansa un poco el fin de semana!' ; END ; DE LO CONTRARIO BEGIN PRINT 'Es un día laborable.' ; PRINT '¡Ponte a trabajar un día laborable!' ; END ;                 

WAITFOResperará un tiempo determinado o hasta una hora determinada del día. La instrucción se puede utilizar para generar demoras o para bloquear la ejecución hasta la hora establecida.

RETURNSe utiliza para regresar inmediatamente desde un procedimiento o función almacenada .

BREAKfinaliza el WHILEbucle que lo encierra y CONTINUEhace que se ejecute la siguiente iteración del bucle. WHILEA continuación se muestra un ejemplo de bucle.

DECLARAR @i INT ; ESTABLECER @i = 0 ;     MIENTRAS @i < 5 COMIENZA IMPRIMIR 'Hola mundo.' ; ESTABLECER @i = @i + 1 ; FIN ;           

Cambios en las instrucciones DELETE y UPDATE

En Transact-SQL, tanto las instrucciones DELETEcomo UPDATElas instrucciones se mejoran para permitir que se utilicen datos de otra tabla en la operación, sin necesidad de una subconsulta:

Este ejemplo elimina todos userslos que han sido marcados en la user_flagstabla con el indicador 'inactivo'.

ELIMINAR u DE usuarios COMO u UNIRSE INTERNAMENTAL user_flags COMO f EN u . id = f . id DONDE f . name = 'idle' ;                

INSERTO A GRANEL

BULKes una sentencia Transact-SQL que implementa un proceso de carga masiva de datos, insertando varias filas en una tabla y leyendo datos de un archivo secuencial externo. El uso de BULK INSERTgenera un mejor rendimiento que los procesos que emiten INSERTsentencias individuales para cada fila que se va a agregar. Hay detalles adicionales disponibles en MSDN.

Intenta atrapar

A partir de SQL Server 2005, [1] Microsoft introdujo TRY CATCHlógica adicional para admitir el comportamiento de tipo de excepción. Este comportamiento permite a los desarrolladores simplificar su código y omitir @@ERRORla comprobación después de cada instrucción de ejecución de SQL.

-- iniciar transacción BEGIN TRAN ; BEGIN TRY - ejecutar cada instrucción INSERT INTO MYTABLE ( NOMBRE ) VALORES ( 'ABC' ); INSERT INTO MYTABLE ( NOMBRE ) VALORES ( '123' );             -- confirmar la transacción COMMIT TRAN ; END TRY BEGIN CATCH -- revertir la transacción debido a un error ROLLBACK TRAN ; END CATCH ;        

Véase también

Referencias

  1. ^ "Mejoras de T-SQL en SQL Server 2012", Jonathan Allen el 19 de marzo de 2012, infoq.com

Enlaces externos