Transact SQL es un lenguaje de programación que extiende SQL estándar con elementos como variables, estructuras de control de flujo y bucles, permitiendo programar procedimientos almacenados, funciones, triggers y scripts en SQL Server. Incluye estructuras condicionales como IF y CASE, y permite definir y ejecutar procedimientos almacenados que pueden devolver valores o conjuntos de resultados.
2. SQL es un lenguaje de consulta para los sistemas de bases de datos relaciónales, pero que no posee la potencia de los lenguajes de programación. No permite el uso de variables, estructuras de control de flujo, bucles ... y demás elementos caracteristicos de la programación. No es de extrañar, SQL es un lenguaje de consulta, no un lenguaje de programación. Transact SQL es el lenguaje de programación que proporciona Microsoft SQL Server para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los lenguajes de programación . Con Transact SQL vamos a poder programar las unidades de programa de la base de datos SQL Server, están son: Procedimientos almacenados Funciones Triggers Scripts
3. Estructura condicional IF La estuctura condicional IF permite evaluar una expresión booleana (resultado SI - NO), y ejecutar las operaciones contenidas en el bloque formado por BEGIN END. Estructura condicional CASE La estructura condicional CASE permite evaluar una expresión y devolver un valor u otro. Estructura GOTO La sentencia go0to nos permite desviar el flujo de ejecución hacia una etiqueta. Actualmente, se desaconseja el uso GOTO, recomendándose el uso de TRY - CATCH para la gestión de errores.
4. Procedimientos almacenados en Transact SQL Un procedimiento es un programa dentro de la base de datos que ejecuta una acción o conjunto de acciones especificas. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código. En Transact SQL los procedimientos almacenados pueden devolver valores (numéricos enteros) o conjuntos de resultados.
5. create procedure calcula_pago @nroint as declare @pagomoney,@lineamoney,@dni char(8),@tipo_ejevarchar(5),@tipo_tarvarchar(8) select @linea=linea_credito from transacciones where nro=@nro select @dni=ejecutivo from transacciones where nro=@nro select @tipo_eje=tipo from ejecutivo where dni=@dni select @tipo_tar=tipo_tarjeta from transacciones where nro=@nro if @tipo_eje='CAMPO' begin if @tipo_tar='VISA' begin if @linea<1000 select @pago=25 else if @linea<2500 select @pago=50
6. else select @pago=80 end if @tipo_tar='MASTER' begin if @linea<800 select @pago=20 else if @linea<2000 select @pago=60 else select @pago=85 end if @tipo_tar='AMERICAN' begin
7. if @linea<1200 select @pago=50 else if @linea>=1200 and @linea<2500 select @pago=100 else select @pago=160 end end else begin if @tipo_tar='VISA' begin if @linea<1000 select @pago=20 else if @linea>=1000 and @linea<2500 select @pago=40
8. else select @pago=70 end if @tipo_tar='MASTER' begin if @linea<800 select @pago=15 else if @linea>=800 and @linea<2000 select @pago=55 else select @pago=80 end if @tipo_tar='AMERICAN' begin
9. if @linea<1200 select @pago=45 else if @linea>=1200 and @linea<2500 select @pago=90 else select @pago=150 end end update transacciones set pago=@pago where nro=@nro execute calcula_pago '2'