stringtranslate.com

Transact-SQL

Transact-SQL ( T-SQL ) es la extensión patentada de Microsoft y Sybase del 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 de procedimientos , variables locales , varias funciones de soporte para procesamiento de cadenas, procesamiento de fechas, matemáticas, etc. y cambios en las declaraciones DELETE y UPDATE .

Transact-SQL es fundamental para utilizar Microsoft SQL Server . Todas las aplicaciones que se comunican con una instancia de SQL Server lo hacen enviando declaraciones 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.

DECLARAR @var1 NVARCHAR ( 30 ); SET @var1 = 'Algún nombre' ; SELECT @var1 = Nombre DE Ventas . Tienda DONDE CustomerID = 100 ;              

Control de flujo

Las palabras clave para el control de flujo en Transact-SQL incluyen BEGINy END, BREAK, CONTINUE, y , , y .GOTOIFELSERETURNWAITFORWHILE

IFy ELSEpermitir la ejecución condicional. Esta declaración por lotes imprimirá "Es fin de semana" si la fecha actual es un día 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).

IF DATEPART ( dw , GETDATE ()) = 7 OR DATEPART ( dw , GETDATE ()) = 1 PRINT 'Es fin de semana.' ; ELSE PRINT 'Es un día laborable'. ;             

BEGINy ENDmarcar un bloque de declaraciones . Si más de una declaración va a ser controlada por el condicional en el ejemplo anterior, podemos usar BEGINy ENDasí:

IF DATEPART ( dw , GETDATE ()) = 7 OR DATEPART ( dw , GETDATE ()) = 1 BEGIN PRINT 'Es fin de semana.' ; IMPRIMIR '¡Descansa un poco el fin de semana!' ; FIN ; ELSE BEGIN PRINT 'Es un día laborable'. ; IMPRIMIR '¡Ponte a trabajar en un día laborable!' ; FIN ;                 

WAITFOResperará un período de tiempo determinado o hasta una hora determinada del día. La declaración se puede utilizar para retrasar o bloquear la ejecución hasta el momento establecido.

RETURNse utiliza para regresar inmediatamente de un procedimiento o función almacenados.

BREAKWHILEfinaliza el bucle circundante , mientras que CONTINUEhace que se ejecute la siguiente iteración del bucle. WHILEA continuación se ofrece un ejemplo de bucle.

DECLARAR @i INT ; ESTABLECER @i = 0 ;     WHILE @i < 5 BEGIN PRINT 'Hola mundo.' ; ESTABLECER @i = @i + 1 ; FIN ;           

Cambios en las declaraciones DELETE y UPDATE

En Transact-SQL, tanto las instrucciones DELETEcomo UPDATEse mejoran para permitir que los datos de otra tabla se utilicen 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 los usuarios COMO u UNIRSE INTERIOR user_flags COMO f EN u . identificación = f . identificación DONDE f . nombre = 'inactivo' ;                

INSERTO A GRANEL

BULKes una declaración 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 INSERTresultados produce un mejor rendimiento que los procesos que emiten INSERTdeclaraciones individuales para cada fila que se agregará. Detalles adicionales están disponibles en MSDN.

TRATA DE ATRAPARLO

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

-- comenzar la transacción BEGIN TRAN ; COMENZAR EL INTENTO : ejecute cada instrucción INSERT INTO MYTABLE ( NAME ) VALUES ( 'ABC' ); INSERTAR EN MITABLA ( NOMBRE ) VALORES ( '123' );             -- confirmar la transacción COMMIT TRAN ; END TRY BEGIN CATCH - revertir la transacción debido a un error ROLLBACK TRAN ; FINAL DE CAPTURA ;        

Ver también

Referencias

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

enlaces externos