Advertisement
hoscanoa

T-SQL

Mar 13th, 2014
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.79 KB | None | 0 0
  1. --VARIABLES GLOBALES
  2. PRINT @@SERVERNAME
  3. PRINT @@SERVICENAME
  4. PRINT @@ERROR
  5. PRINT @@VERSION
  6. PRINT @@LANGUAGE
  7. PRINT @@IDENTITY
  8.  
  9.  
  10.  
  11. --------------------------------
  12. USE Neptuno
  13. GO
  14. --------------------------------
  15. SET DATEFORMAT DMY
  16. GO
  17. --------------------------------
  18.  
  19. /* VARIABLES LOCALES*/
  20. --DECLARACION
  21. DECLARE @v_nombre VARCHAR(40)
  22. DECLARE @v_fecha DATE
  23. DECLARE @v_sueldo MONEY
  24.  
  25. --ASIGNACION DE VAOR
  26. SET @v_nombre='SUSANA'
  27. SELECT @v_fecha='21/02/1980'
  28. SET @v_sueldo=1500
  29. --IMPRIMIR EL VALOR DE LAS VARIABLES
  30. PRINT 'EL NOMBRE ES:'+ SPACE(1)+@v_nombre
  31. PRINT 'LA FECHA DE NACIMIENTO ES: ' +SPACE(1)+ CONVERT(VARCHAR(12), @v_fecha, 7) /*1-6 OPCIONES PARA FECHAS*/
  32. PRINT 'EL SUELDO ES: '+SPACE(1)+CONVERT(VARCHAR(12),@v_sueldo,1)
  33.  
  34. ----------------------------------
  35. /*A NIVEL DE SUBQUERYS*/
  36. DECLARE @v_idProd1 SMALLINT =40
  37. DECLARE @v_idProd2 SMALLINT =20
  38.  
  39. DECLARE @V_precioP1 MONEY
  40. DECLARE @V_precioP2 MONEY
  41.  
  42. SET @V_precioP1 = (SELECT PrecioUnidad FROM Productos
  43.     WHERE IdProducto=@v_idProd1)
  44.  
  45. SET @V_precioP2 = (SELECT PrecioUnidad FROM Productos
  46.     WHERE IdProducto=@v_idProd2)
  47.  
  48. IF @V_precioP1>=@V_precioP2
  49.     SELECT NombreProducto FROM Productos
  50.     WHERE IdProducto=@v_idProd1
  51. ELSE
  52.     SELECT NombreProducto FROM Productos
  53.     WHERE IdProducto=@v_idProd2
  54.  
  55.  
  56. -----------------------------------------------
  57. --QUIEN ES EL CLIENTE QUE M�S A FACTURADO EN EL MES DE FEBRERO
  58.  
  59. DECLARE @v_cliente VARCHAR(20)
  60. DECLARE @v_NomMes VARCHAR(30)='Marzo'
  61.  
  62. SET @v_cliente=(SELECT TOP 1 C.NombreCompa��a FROM Pedidos p JOIN Detalles D
  63.     ON P.IdPedido=D.IdPedido JOIN Clientes C
  64.     ON P.IdCliente=C.IdCliente
  65.     WHERE DATENAME(MM, P.FechaPedido)=@v_NomMes
  66.     GROUP BY C.NombreCompa��a, D.Descuento
  67.     ORDER BY SUM((D.PrecioUnidad*D.Cantidad)-D.Descuento) DESC)
  68.  
  69. PRINT 'EL CLIENTE QUE MAS HA FACTURADO EN EL MES ' + SPACE(1) + @v_NomMes + SPACE(1) + 'es ' + @v_cliente
  70. GO
  71.    
  72.  
  73. -----------------------------------------------
  74. --Mostrar el nombre del producto 10, la categoria y su status de existencia,
  75. --es decir seg�n unidades en existencia, mayor a 50 su estado es OK y meneor a 51 su
  76. --estado es reposicion
  77.  
  78. DECLARE @v_IdProducto INT = 40
  79. DECLARE @v_NombreProducto VARCHAR(40)
  80. DECLARE @v_NombreCategor�a VARCHAR(40)
  81. DECLARE @v_existencia SMALLINT
  82. DECLARE @v_status VARCHAR(20)
  83.  
  84. SET @v_NombreProducto = (SELECT P.NombreProducto FROM Productos P
  85.     WHERE P.IdProducto=@v_IdProducto)
  86.  
  87. SET @v_NombreCategor�a = (SELECT C.NombreCategor�a FROM Categor�as C INNER JOIN Productos P
  88.     ON C.IdCategor�a=P.IdCategor�a
  89.     WHERE P.IdProducto=@v_IdProducto)
  90.  
  91. SET @v_existencia = (SELECT P.UnidadesEnExistencia FROM Productos P
  92.     WHERE P.IdProducto=@v_IdProducto)
  93.  
  94. IF @v_existencia > 50
  95.     SET @v_status='OK'
  96. ELSE
  97.     SET @v_status='REPOSICION'
  98.  
  99. PRINT 'Nombre del Producto:' + SPACE(1) + @v_NombreProducto
  100. PRINT 'Categoria          :' + SPACE(1) + @v_NombreCategor�a
  101. PRINT 'Existencia         :' + SPACE(1) + CONVERT(VARCHAR(20),@v_existencia)
  102. PRINT 'Status             :' + SPACE(1) + @v_status
  103. GO
  104.  
  105.  
  106. ------------
  107.  
  108. DECLARE @v_IdProducto INT = 40
  109. DECLARE @v_NombreProducto VARCHAR(40)
  110. DECLARE @v_NombreCategor�a VARCHAR(40)
  111. DECLARE @v_existencia SMALLINT
  112. DECLARE @v_status VARCHAR(20)
  113.  
  114. SELECT @v_NombreProducto = P.NombreProducto,
  115.     @v_NombreCategor�a= C.NombreCategor�a,
  116.     @v_existencia = P.UnidadesEnExistencia
  117.     FROM Categor�as C INNER JOIN Productos P
  118.     ON C.IdCategor�a=P.IdCategor�a
  119.     WHERE P.IdProducto=@v_IdProducto
  120.  
  121. IF @v_existencia > 50
  122.     SET @v_status='OK'
  123. ELSE
  124.     SET @v_status='REPOSICION'
  125.  
  126. PRINT 'Nombre del Producto:' + SPACE(1) + @v_NombreProducto
  127. PRINT 'Categoria          :' + SPACE(1) + @v_NombreCategor�a
  128. PRINT 'Existencia         :' + SPACE(1) + CONVERT(VARCHAR(20),@v_existencia)
  129. PRINT 'Status             :' + SPACE(1) + @v_status
  130. GO
  131.  
  132. ------------
  133.  
  134. -----------------------------------------------
  135. --De acuerdo a la cantidad en existencia determne su nivel de stock de la siguiente manera:
  136. --Unidades 0 = Cr�tico
  137. --Unidades entre 1 y 30 = Regular
  138. --Unidades entre 31 y 60 = Conforme
  139. --Mayores a 60 = Sobrexistencia
  140. --Otros valores = No definido
  141.  
  142. Declare @v_idP smallint =20
  143. Declare @v_uexis smallint
  144. Declare @v_Nivel varchar(20)
  145.  
  146. SELECT @v_uexis=UnidadesEnExistencia
  147.     FROM Productos
  148.     WHERE IdProducto=@v_idP
  149.  
  150. Set @v_nivel = CASE
  151.                    WHEN @v_uexis=0 THEN 'Cr�tico'
  152.                    WHEN @v_uexis BETWEEN 1 AND 30 THEN 'Regular'
  153.                    WHEN @v_uexis BETWEEN 31 AND 60 THEN 'Conforme'
  154.                    WHEN @v_uexis > 60 THEN 'SobrexistencaCr�tico'
  155.                    ELSE 'No definido'
  156.                END
  157.  
  158. PRINT @v_uexis
  159. PRINT @v_nivel             
  160.  
  161.  
  162. ------------
  163.  
  164. --------------W H I L E-------------------
  165. --
  166. DECLARE @v_fec DATETIME = '01/01/2010 00:00'
  167. WHILE @v_fec<= GETDATE()
  168. BEGIN
  169.     PRINT @v_fec
  170.     SET  @v_fec=DATEADD(hh, 1, @v_fec)
  171. END
  172. PRINT 'SE ACABO'
  173. GO
  174.  
  175.  
  176. /* TRY CATCH*/
  177. CREATE TABLE TBUSUARIO
  178. (
  179.     cos_usu char(5) not null Primary key,
  180.     nom_usu varchar(20) not null
  181. )
  182. GO
  183.  
  184. CREATE TABLE TBOPERACION
  185. (
  186.     cod_oper char(5) not null Primary key,
  187.     nom_oper varchar(20),
  188.     cod_usu char(5) references TBUSUARIO
  189. )
  190. GO
  191.  
  192.  
  193. ------------
  194. Declare @v_error int
  195. BEGIN TRY
  196.     Declare @v_error int
  197.     insert TBUSUARIO
  198.     VALUES
  199.     ('U0002', 'Alejandraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
  200.     --Print 'Todo OK'
  201.     Set @v_error = @@ERROR
  202.     if @v_error>0
  203.         Raiserror('Mensaje error',16,1)
  204. END TRY
  205. BEGIN CATCH
  206.     IF error_number()=2627
  207.         --PRINT error_message()
  208.         PRINT 'No se puede ingresar c�digo error'
  209.    
  210.     IF error_number()=8152     
  211.         PRINT 'El dato nombre es extenso para la BD'
  212.  
  213.     print @v_error
  214.  
  215. END CATCH
  216.  
  217.  
  218. -----------------------
  219. BEGIN TRY
  220.     insert TBUSUARIO
  221.     VALUES
  222.     ('U0002', 'Alejandraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
  223.     Print 'Todo OK'
  224. END TRY
  225. BEGIN CATCH
  226.     IF error_number()=2627
  227.         --PRINT error_message()
  228.         PRINT 'No se puede ingresar c�digo error'
  229.    
  230.     IF error_number()=8152     
  231.         PRINT 'El dato nombre es extenso para la BD'
  232. END CATCH
  233.  
  234.  
  235. -------------------------
  236.  
  237. BEGIN TRY
  238.     INSERT TBOPERACION
  239.     VALUES
  240.     ('OP001','OPERACION MATENIMIENTO','U0099')
  241. END TRY
  242. BEGIN CATCH
  243.     --IF error_number()
  244. END CATCH
  245.  
  246. -------------------------------
  247.  
  248. DELETE FROM TBUSUARIO
  249. WHERE cos_usu='U0002'
  250. GO
  251.  
  252.  
  253. --------------------------------
  254. BEGIN TRY
  255.     DECLARE @tipo int, @clasificacion int
  256.  
  257.     SET @tipo=1
  258.     SET @clasificacion=3
  259.  
  260.     IF(@tipo=1 AND @clasificacion=3)
  261.     BEGIN
  262.         Raiserror('El tipo no puede valer uno y la clasificacion 3',16,1)--10
  263.     END
  264. END TRY
  265.  
  266. BEGIN CATCH
  267.     IF error_number()=50000
  268.         PRINT 'ERROR LANZADO POR NOSOTROS'
  269. END CATCH
  270.  
  271. -------------------------------
  272. BEGIN TRY
  273. DECLARE @v_cu CHAR(5)='TT345'
  274. DECLARE @v_nu VARCHAR(20)='tytytyty'
  275.  
  276. IF @v_cu NOT LIKE '[A-Z][A-Z][0-9][0-9][0-9]'
  277.     RAISERROR ('Error del formato del c�digo', 10,1)
  278. ELSE
  279.     IF len(@v_nu)>15
  280.         RAISERROR ('error texto muy grande',10,1)
  281.     ELSE
  282.     INSERT TBUSUARIO
  283.     VALUES
  284.     (@v_cu, @v_nu)
  285. END TRY
  286. BEGIN CATCH
  287.     IF error_number()=2627
  288.         PRINT 'Clave duplicada'
  289. END CATCH
  290.  
  291. -------------------------------------------------
  292. /*----------------C U R S O R E S------------------*/
  293.  
  294. USE Neptuno
  295. GO
  296.  
  297.  
  298. --DEFINIR LAS VARIABLES DEL CURSOR
  299. --una por cada una de las columnas a mostrar
  300. DECLARE @vc_Id VARCHAR(5), @vc_Nombre VARCHAR(50), @vc_Ciudad VARCHAR(50)
  301.  
  302. --DEFINIR MI CURSOR
  303. DECLARE MiCursor Cursor FOR SELECT IdCliente, NombreCompa��a, Ciudad FROM Clientes
  304.  
  305. --Abrir el cursor
  306. OPEN MiCursor
  307.  
  308. --Posicionar el puntero en el primer registro
  309. Fetch next from MiCursor Into @vc_Id, @vc_Nombre, @vc_Ciudad
  310.  
  311. --Recorrer el cursor
  312. WHILE @@FETCH_STATUS = 0
  313. BEGIN
  314.     PRINT 'C�digo: '+@vc_Id
  315.     PRINT 'Nombre: '+@vc_Nombre
  316.     PRINT 'Ciudad: '+@vc_Ciudad
  317.     PRINT '======================================'
  318.     Fetch next from MiCursor Into @vc_Id, @vc_Nombre, @vc_Ciudad
  319. END
  320.  
  321. --cerrar el cursor
  322. CLOSE MiCursor
  323.  
  324. --lIBERAR MEMORIA
  325. DEALLOCATE MiCursor
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement