Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --VARIABLES GLOBALES
- PRINT @@SERVERNAME
- PRINT @@SERVICENAME
- PRINT @@ERROR
- PRINT @@VERSION
- PRINT @@LANGUAGE
- PRINT @@IDENTITY
- --------------------------------
- USE Neptuno
- GO
- --------------------------------
- SET DATEFORMAT DMY
- GO
- --------------------------------
- /* VARIABLES LOCALES*/
- --DECLARACION
- DECLARE @v_nombre VARCHAR(40)
- DECLARE @v_fecha DATE
- DECLARE @v_sueldo MONEY
- --ASIGNACION DE VAOR
- SET @v_nombre='SUSANA'
- SELECT @v_fecha='21/02/1980'
- SET @v_sueldo=1500
- --IMPRIMIR EL VALOR DE LAS VARIABLES
- PRINT 'EL NOMBRE ES:'+ SPACE(1)+@v_nombre
- PRINT 'LA FECHA DE NACIMIENTO ES: ' +SPACE(1)+ CONVERT(VARCHAR(12), @v_fecha, 7) /*1-6 OPCIONES PARA FECHAS*/
- PRINT 'EL SUELDO ES: '+SPACE(1)+CONVERT(VARCHAR(12),@v_sueldo,1)
- ----------------------------------
- /*A NIVEL DE SUBQUERYS*/
- DECLARE @v_idProd1 SMALLINT =40
- DECLARE @v_idProd2 SMALLINT =20
- DECLARE @V_precioP1 MONEY
- DECLARE @V_precioP2 MONEY
- SET @V_precioP1 = (SELECT PrecioUnidad FROM Productos
- WHERE IdProducto=@v_idProd1)
- SET @V_precioP2 = (SELECT PrecioUnidad FROM Productos
- WHERE IdProducto=@v_idProd2)
- IF @V_precioP1>=@V_precioP2
- SELECT NombreProducto FROM Productos
- WHERE IdProducto=@v_idProd1
- ELSE
- SELECT NombreProducto FROM Productos
- WHERE IdProducto=@v_idProd2
- -----------------------------------------------
- --QUIEN ES EL CLIENTE QUE MÁS A FACTURADO EN EL MES DE FEBRERO
- DECLARE @v_cliente VARCHAR(20)
- DECLARE @v_NomMes VARCHAR(30)='Marzo'
- SET @v_cliente=(SELECT TOP 1 C.NombreCompañía FROM Pedidos p JOIN Detalles D
- ON P.IdPedido=D.IdPedido JOIN Clientes C
- ON P.IdCliente=C.IdCliente
- WHERE DATENAME(MM, P.FechaPedido)=@v_NomMes
- GROUP BY C.NombreCompañía, D.Descuento
- ORDER BY SUM((D.PrecioUnidad*D.Cantidad)-D.Descuento) DESC)
- PRINT 'EL CLIENTE QUE MAS HA FACTURADO EN EL MES ' + SPACE(1) + @v_NomMes + SPACE(1) + 'es ' + @v_cliente
- GO
- -----------------------------------------------
- --Mostrar el nombre del producto 10, la categoria y su status de existencia,
- --es decir según unidades en existencia, mayor a 50 su estado es OK y meneor a 51 su
- --estado es reposicion
- DECLARE @v_IdProducto INT = 40
- DECLARE @v_NombreProducto VARCHAR(40)
- DECLARE @v_NombreCategoría VARCHAR(40)
- DECLARE @v_existencia SMALLINT
- DECLARE @v_status VARCHAR(20)
- SET @v_NombreProducto = (SELECT P.NombreProducto FROM Productos P
- WHERE P.IdProducto=@v_IdProducto)
- SET @v_NombreCategoría = (SELECT C.NombreCategoría FROM Categorías C INNER JOIN Productos P
- ON C.IdCategoría=P.IdCategoría
- WHERE P.IdProducto=@v_IdProducto)
- SET @v_existencia = (SELECT P.UnidadesEnExistencia FROM Productos P
- WHERE P.IdProducto=@v_IdProducto)
- IF @v_existencia > 50
- SET @v_status='OK'
- ELSE
- SET @v_status='REPOSICION'
- PRINT 'Nombre del Producto:' + SPACE(1) + @v_NombreProducto
- PRINT 'Categoria :' + SPACE(1) + @v_NombreCategoría
- PRINT 'Existencia :' + SPACE(1) + CONVERT(VARCHAR(20),@v_existencia)
- PRINT 'Status :' + SPACE(1) + @v_status
- GO
- ------------
- DECLARE @v_IdProducto INT = 40
- DECLARE @v_NombreProducto VARCHAR(40)
- DECLARE @v_NombreCategoría VARCHAR(40)
- DECLARE @v_existencia SMALLINT
- DECLARE @v_status VARCHAR(20)
- SELECT @v_NombreProducto = P.NombreProducto,
- @v_NombreCategoría= C.NombreCategoría,
- @v_existencia = P.UnidadesEnExistencia
- FROM Categorías C INNER JOIN Productos P
- ON C.IdCategoría=P.IdCategoría
- WHERE P.IdProducto=@v_IdProducto
- IF @v_existencia > 50
- SET @v_status='OK'
- ELSE
- SET @v_status='REPOSICION'
- PRINT 'Nombre del Producto:' + SPACE(1) + @v_NombreProducto
- PRINT 'Categoria :' + SPACE(1) + @v_NombreCategoría
- PRINT 'Existencia :' + SPACE(1) + CONVERT(VARCHAR(20),@v_existencia)
- PRINT 'Status :' + SPACE(1) + @v_status
- GO
- ------------
- -----------------------------------------------
- --De acuerdo a la cantidad en existencia determne su nivel de stock de la siguiente manera:
- --Unidades 0 = Crítico
- --Unidades entre 1 y 30 = Regular
- --Unidades entre 31 y 60 = Conforme
- --Mayores a 60 = Sobrexistencia
- --Otros valores = No definido
- Declare @v_idP smallint =20
- Declare @v_uexis smallint
- Declare @v_Nivel varchar(20)
- SELECT @v_uexis=UnidadesEnExistencia
- FROM Productos
- WHERE IdProducto=@v_idP
- Set @v_nivel = CASE
- WHEN @v_uexis=0 THEN 'Crítico'
- WHEN @v_uexis BETWEEN 1 AND 30 THEN 'Regular'
- WHEN @v_uexis BETWEEN 31 AND 60 THEN 'Conforme'
- WHEN @v_uexis > 60 THEN 'SobrexistencaCrítico'
- ELSE 'No definido'
- END
- PRINT @v_uexis
- PRINT @v_nivel
- ------------
- --------------W H I L E-------------------
- --
- DECLARE @v_fec DATETIME = '01/01/2010 00:00'
- WHILE @v_fec<= GETDATE()
- BEGIN
- PRINT @v_fec
- SET @v_fec=DATEADD(hh, 1, @v_fec)
- END
- PRINT 'SE ACABO'
- GO
- /* TRY CATCH*/
- CREATE TABLE TBUSUARIO
- (
- cos_usu char(5) not null Primary key,
- nom_usu varchar(20) not null
- )
- GO
- CREATE TABLE TBOPERACION
- (
- cod_oper char(5) not null Primary key,
- nom_oper varchar(20),
- cod_usu char(5) references TBUSUARIO
- )
- GO
- ------------
- Declare @v_error int
- BEGIN TRY
- Declare @v_error int
- insert TBUSUARIO
- VALUES
- ('U0002', 'Alejandraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
- --Print 'Todo OK'
- Set @v_error = @@ERROR
- if @v_error>0
- Raiserror('Mensaje error',16,1)
- END TRY
- BEGIN CATCH
- IF error_number()=2627
- --PRINT error_message()
- PRINT 'No se puede ingresar código error'
- IF error_number()=8152
- PRINT 'El dato nombre es extenso para la BD'
- print @v_error
- END CATCH
- -----------------------
- BEGIN TRY
- insert TBUSUARIO
- VALUES
- ('U0002', 'Alejandraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
- Print 'Todo OK'
- END TRY
- BEGIN CATCH
- IF error_number()=2627
- --PRINT error_message()
- PRINT 'No se puede ingresar código error'
- IF error_number()=8152
- PRINT 'El dato nombre es extenso para la BD'
- END CATCH
- -------------------------
- BEGIN TRY
- INSERT TBOPERACION
- VALUES
- ('OP001','OPERACION MATENIMIENTO','U0099')
- END TRY
- BEGIN CATCH
- --IF error_number()
- END CATCH
- -------------------------------
- DELETE FROM TBUSUARIO
- WHERE cos_usu='U0002'
- GO
- --------------------------------
- BEGIN TRY
- DECLARE @tipo int, @clasificacion int
- SET @tipo=1
- SET @clasificacion=3
- IF(@tipo=1 AND @clasificacion=3)
- BEGIN
- Raiserror('El tipo no puede valer uno y la clasificaicon 3',16,1)--10
- END
- END TRY
- BEGIN CATCH
- IF error_number()=50000
- PRINT 'ERROR LANZADO POR NOSOTROS'
- END CATCH
- -------------------------------
- BEGIN TRY
- DECLARE @v_cu CHAR(5)='TT345'
- DECLARE @v_nu VARCHAR(20)='tytytyty'
- IF @v_cu NOT LIKE '[A-Z][A-Z][0-9][0-9][0-9]'
- RAISERROR ('Error del formato del código', 10,1)
- ELSE
- IF len(@v_nu)>15
- RAISERROR ('error texto muy grande',10,1)
- ELSE
- INSERT TBUSUARIO
- VALUES
- (@v_cu, @v_nu)
- END TRY
- BEGIN CATCH
- IF error_number()=2627
- PRINT 'Clave duplicada'
- END CATCH
- -------------------------------------------------
- /*----------------C U R S O R E S------------------*/
- USE Neptuno
- GO
- --DEFINIR LAS VARIABLES DEL CURSOR
- --una por cada una de las columnas a mostrar
- DECLARE @vc_Id VARCHAR(5), @vc_Nombre VARCHAR(50), @vc_Ciudad VARCHAR(50)
- --DEFINIR MI CURSOR
- DECLARE MiCursor Cursor FOR SELECT IdCliente, NombreCompañía, Ciudad FROM Clientes
- --Abrir el cursor
- OPEN MiCursor
- --Posicionar el puntero en el primer registro
- Fetch next from MiCursor Into @vc_Id, @vc_Nombre, @vc_Ciudad
- --Recorrer el cursor
- WHILE @@FETCH_STATUS = 0
- BEGIN
- PRINT 'Código: '+@vc_Id
- PRINT 'Nombre: '+@vc_Nombre
- PRINT 'Ciudad: '+@vc_Ciudad
- PRINT '======================================'
- Fetch next from MiCursor Into @vc_Id, @vc_Nombre, @vc_Ciudad
- END
- --cerrar el cursor
- CLOSE MiCursor
- --lIBERAR MEMORIA
- DEALLOCATE MiCursor
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement