Advertisement
Guest User

Untitled

a guest
Apr 28th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.36 KB | None | 0 0
  1. SET LANGUAGE Spanish
  2. SET NOCOUNT ON
  3.  
  4. PRINT CHAR(13) + CHAR(10) --Salto de línea
  5.  
  6. GO
  7. BEGIN TRY
  8.     --¡INDICA UN NOMBRE DE TRANSACCIÓN!
  9.     BEGIN TRANSACTION ConsultaPoliticasBotonAlta
  10.  
  11.     DECLARE @idComponente AS INT
  12.     DECLARE @listIdRol TABLE (RowNumber INT IDENTITY(1, 1), VALUE INT)
  13.     DECLARE @componenteNombre AS NVARCHAR(256)
  14.     DECLARE @componenteNombreKey AS NVARCHAR(256)
  15.     DECLARE @idVista AS INT
  16.     DECLARE @vistaNombreKey AS NVARCHAR(256)
  17.     DECLARE @idRolActual AS INT
  18.     DECLARE @ocurrenciansEnRolesComponentes AS INT
  19.     DECLARE @loopCount AS INT
  20.  
  21.     --¡INICIALIZAR ESTAS VARIABLES!
  22.     SET @componenteNombre = 'ConsultaPoliticas.Boton.Alta'
  23.     SET @componenteNombreKey = 'AltaKey'
  24.     SET @idVista = 90
  25.    
  26.     --¡AÑADIR LOS ROLES AQUÍ!
  27.     INSERT INTO @listIdRol VALUES (5)
  28.     INSERT INTO @listIdRol VALUES (37)
  29.     INSERT INTO @listIdRol VALUES (1156)
  30.     INSERT INTO @listIdRol VALUES (1157)
  31.  
  32.     PRINT '*** Alta de componente ' + @componenteNombre + ' en la vista ' + CAST(@idVista AS NVARCHAR(256)) + ' ***'
  33.  
  34.     SELECT @idComponente = IdComponente
  35.     FROM Componentes
  36.     WHERE Nombre = @componenteNombre
  37.  
  38.     IF @idComponente IS NULL BEGIN
  39.         INSERT INTO Componentes (IdVista, Nombre, NombreKey, Blocked)
  40.         VALUES (@idVista, @componenteNombre, @componenteNombreKey, 0)
  41.  
  42.         SELECT @idComponente = SCOPE_IDENTITY()
  43.  
  44.         PRINT '** Insertado componente ' + @componenteNombre + ' en la tabla Componentes con id '
  45.             + CAST(@idComponente AS NVARCHAR(256)) + ' **'
  46.     END
  47.     ELSE BEGIN
  48.         UPDATE Componentes
  49.         SET IdVista = @idVista, Nombre = @componenteNombre, NombreKey = @componenteNombreKey, Blocked = 0
  50.         WHERE IdComponente = @idComponente
  51.  
  52.         PRINT '** El componente ' + @componenteNombre + ' ya existía en la tabla Componentes con id '
  53.             + CAST(@idComponente AS NVARCHAR(256)) + '. Ha sido modificado según los paramétros de entrada **'
  54.     END
  55.  
  56.     PRINT '** Comenzando altas en RolesComponentes **'
  57.  
  58.     SET @loopCount = 1
  59.  
  60.     WHILE @loopCount <= (SELECT MAX(RowNumber) FROM @listIdRol) BEGIN
  61.         SELECT @idRolActual = VALUE
  62.         FROM @listIdRol
  63.         WHERE RowNumber = @loopCount
  64.  
  65.         SELECT @ocurrenciansEnRolesComponentes = COUNT(*) FROM RolesComponentes
  66.         WHERE IdRole = @idRolActual AND IdComponente = @idComponente
  67.  
  68.         IF @ocurrenciansEnRolesComponentes = 0 BEGIN
  69.             INSERT INTO RolesComponentes (IdRole, IdComponente, IsEnabled)
  70.             VALUES (@idRolActual, @idComponente, 1)
  71.  
  72.             PRINT '* Insertado rol ' + CAST(@idRolActual AS NVARCHAR(256))
  73.                 + ' en la tabla RolesComponentes para el compomente ' + @componenteNombre + ' *'
  74.         END
  75.         ELSE BEGIN
  76.             PRINT '* El rol ' + CAST(@idRolActual AS NVARCHAR(256))
  77.                 + ' ya existía en la tabla RolesComponentes para el componente ' + @componenteNombre + ' *'
  78.         END
  79.  
  80.         SET @loopCount = @loopCount + 1
  81.     END
  82.  
  83.     PRINT '** Finalizadas las altas en RolesComponentes **'
  84.  
  85.     --¡INDICA UN NOMBRE DE TRANSACCIÓN!
  86.     COMMIT TRANSACTION ConsultaPoliticasBotonAlta
  87.     PRINT '*** Alta completada para el componente: ' + @componenteNombre + ' en la vista ' + @vistaNombreKey + ' ***'
  88.     PRINT CHAR(13) + CHAR(10) --Salto de línea
  89. END TRY
  90. BEGIN CATCH
  91.     PRINT '*** Error number: ' + CAST(ERROR_NUMBER() AS NVARCHAR(4)) +
  92.           ', Error message: ' + ERROR_MESSAGE() +
  93.           ', Componente: ' + @componenteNombre + ' ***'
  94.     PRINT CHAR(13) + CHAR(10) --Salto de línea
  95.  
  96.     --¡INDICA UN NOMBRE DE TRANSACCIÓN!
  97.     ROLLBACK TRANSACTION ConsultaPoliticasBotonAlta
  98. END CATCH
  99.  
  100. SET NOCOUNT OFF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement