Ver Mensaje Individual
  #9 (permalink)  
Antiguo 05/04/2013, 20:34
Avatar de dfss
dfss
 
Fecha de Ingreso: febrero-2013
Ubicación: cerca de aqui lejos de alla
Mensajes: 8
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: llamar a varios procedimientos almacenados mediante un trigger en sql serv

disculpa la tardanza amigo aqui dejo lo q realice si no que lo generalice porque no puedo postear codigo de mi trabajo
ojala les sirva a alguna persona que lo necesite

Código SQL:
Ver original
  1. CREATE TRIGGER [dbo].[nombre_trigger]
  2. ON [dbo].[tabla1]
  3. WITH EXECUTE AS CALLER
  4. FOR INSERT
  5.  
  6. AS
  7.  
  8.     BEGIN
  9.         DECLARE @variable1 DECIMAL (1,0)
  10.         DECLARE @variable2 CHAR (3)    
  11.         DECLARE @variable3 CHAR(3)  
  12.         DECLARE @variable4 VARCHAR(100)
  13.         DECLARE @variablesec CHAR(3)
  14.               .
  15.               .
  16.               .
  17.               .
  18.               . --- declaracion de variables
  19.               .
  20.               .
  21.               .
  22.               .
  23.               .
  24.               .
  25.        
  26.         print 'Inicializacion de procesos'
  27.        
  28.         -- Obtener los registros insertados por medio del trigger.
  29.         SELECT @variable1=campo1, @variable2=campo2,@variable3=campo3, @variable4=campo4, ........... etc  FROM INSERTED
  30.        
  31.        
  32.         -- inserted es la insercion en tabla 1 para este ejemplo
  33.         -- la tabla1 tiene un campo error para guardar los mensajes de error
  34.         -- Establecer el mensaje de error.
  35.         SET @msg='PROCESO NO PUDO SER REGISTRADO'
  36.        
  37.         -- Validar que el registro no este ya registrado en las tabla de insercion en mi caso si era 0 busca cualquiera de las condiciones
  38.         -- caso contrario si es 1 guarda un mensaje de error
  39.         IF (@variable4=0)
  40.        
  41.        
  42.        
  43.         BEGIN
  44.             -- declaracion de 1er proceso
  45.             IF (@variable1='condicion1')
  46.             BEGIN
  47.            
  48.            
  49.                 BEGIN
  50.                    
  51.                     -- Establecer las variables necesarias del proceso
  52.                     SET @variable1=(Condicion que quiero de la variable)
  53.                     SET @variable2=(Condicion que quiero de la variable)
  54.                     -- lo que se  necesite establecer en las variables
  55.                     -- yo necesitaba que se me inserte un secuencial en la tabla2 asi que les dejo como hice
  56.                     -- Generación de secuenciales
  57.                     SET @variablesec=((SELECT MAX(campo1) FROM tabla2 WHERE isnumeric(campo1)= 1 AND codigous BETWEEN 200 AND 300 ) + 1)                   
  58.                     -- el isnumeric es porque el campo era tipo char
  59.                     -- Inicialización secuencial para el primer campo, despues del primer campo se ejecuta el set anterior hasta que abarque el rango que dispongamos
  60.                     IF  @variablesec IS NULL
  61.                         BEGIN
  62.                             SET @variablesec= 200
  63.                             PRINT 'Secuencia iniciada'
  64.                         END
  65.                     ELSE
  66.                    
  67.                     -- Ejecucion de procedimiemto
  68.                     EXEC db_Procedimiento1 @variablesec,@varproc1_2 ,@varproc1_3, ...........@varproc1_n;-- todos los sp me servian para la tabla2
  69.                
  70.                 END  
  71.                 ELSE
  72.                 BEGIN
  73.                     -- Actualizando mensaje de error
  74.                     SET @msg='Lo que desee que despligue el mensaje'
  75.                    
  76.                     --Actualizando tabla1 si deseo guardar el mensaje
  77.                     UPDATE tabla1
  78.                     SET error=@msg
  79.                     WHERE @variable1=campo1
  80.                 END
  81.                
  82.             END
  83.            
  84.             ELSE
  85.             BEGIN
  86.                
  87.                 IF (@variable1='condicion2')
  88.                 BEGIN
  89.                     BEGIN  
  90.                         -- Ejecucion de segundo proceso
  91.                         EXEC db_Procedimiento2 @varproc2_1,@varproc2_2 ,@varproc2_3, ...........@varproc2_n;
  92.                    
  93.  
  94.                     END
  95.                     ELSE
  96.                     BEGIN
  97.                             -- Actualizando mensaje de error
  98.                         SET @msg='Lo que desee que despligue el mensaje'
  99.                        
  100.                         --Actualizando tabla1 si deseo guardar el mensaje
  101.                         UPDATE tabla1
  102.                         SET error=@msg
  103.                         WHERE @variable1=campo1
  104.                     END
  105.                 END
  106.                
  107.                 ELSE
  108.                 BEGIN
  109.                    
  110.                     IF (@variable1='condicion3')
  111.                     BEGIN
  112.                        
  113.                         BEGIN      
  114.                             -- Ejecucion de tercer proceso
  115.                             EXEC db_Procedimiento3 @varproc3_1,@varproc3_2 ,@varproc3_3, ...........@varproc3_n;
  116.                        
  117.  
  118.                         END
  119.                         ELSE
  120.                         BEGIN
  121.                                 -- Actualizando mensaje de error
  122.                             SET @msg='Lo que desee que despligue el mensaje'
  123.                            
  124.                             --Actualizando tabla1 si deseo guardar el mensaje
  125.                             UPDATE tabla1
  126.                             SET error=@msg
  127.                             WHERE @variable1=campo1
  128.                         END
  129.                     END
  130.                    
  131.                     ELSE
  132.                     BEGIN
  133.                        
  134.                         IF (@variable1='condicion 4')
  135.                         BEGIN
  136.                            
  137.                             BEGIN      
  138.                                 -- Ejecucion de cuarto procedimiento
  139.                                 EXEC db_Procedimiento4 @varproc4_1,@varproc4_2 ,@varproc4_3, ...........@varproc4_n;
  140.                            
  141.  
  142.                             END
  143.                             ELSE
  144.                             BEGIN
  145.                                     -- Actualizando mensaje de error
  146.                                 SET @msg='Lo que desee que despligue el mensaje'
  147.                                
  148.                                 --Actualizando tabla1 si deseo guardar el mensaje
  149.                                 UPDATE tabla1
  150.                                 SET error=@msg
  151.                                 WHERE @variable1=campo1
  152.                             END
  153.                         END
  154.                        
  155.                         ELSE
  156.                         BEGIN
  157.                            
  158.                             IF (@variable1='condicion5')
  159.                             BEGIN
  160.                                    
  161.                                 BEGIN      
  162.                                     -- Ejecucion de quinto proceso
  163.                                     EXEC db_Procedimiento5 @varproc5_1,@varproc5_2 ,@varproc5_3, ...........@varproc5_n;
  164.                                
  165.  
  166.                                 END
  167.                                 ELSE
  168.                                 BEGIN
  169.                                         -- Actualizando mensaje de error
  170.                                     SET @msg='Lo que desee que despligue el mensaje'
  171.                                    
  172.                                     --Actualizando tabla1 si deseo guardar el mensaje
  173.                                     UPDATE tabla1
  174.                                     SET error=@msg
  175.                                     WHERE @variable1=campo1
  176.                                 END
  177.                             END
  178.                            
  179.                             ELSE
  180.                             BEGIN
  181.                                
  182.                                 IF (@variable1='condicion 6')
  183.                                 BEGIN
  184.                                                    
  185.                                         BEGIN      
  186.                                             -- Ejecucion de sexto proceso
  187.                                             EXEC db_Procedimiento6 @varproc6_1,@varproc6_2 ,@varproc6_3, ...........@varproc6_n;
  188.                                        
  189.  
  190.                                         END
  191.                                         ELSE
  192.                                         BEGIN
  193.                                                 -- Actualizando mensaje de error
  194.                                             SET @msg='Lo que desee que despligue el mensaje'
  195.                                            
  196.                                             --Actualizando tabla1 si deseo guardar el mensaje
  197.                                             UPDATE tabla1
  198.                                             SET error=@msg
  199.                                             WHERE @variable1=campo1
  200.                                         END
  201.                                 END
  202.                                
  203.                                 ELSE
  204.                                 BEGIN
  205.                                     -- Actualizando mensaje de error
  206.                                     SET @msg='Lo que desee que despligue el mensaje'
  207.                                    
  208.                                     --Actualizando tabla1 si deseo guardar el mensaje
  209.                                    
  210.                                     UPDATE tabla1
  211.                                     SET error=@msg
  212.                                     WHERE @variable1=campo1
  213.                                    
  214.                                 END
  215.                                
  216.                             END
  217.                        
  218.                         END
  219.                    
  220.                     END
  221.                
  222.                 END
  223.            
  224.             END
  225.        
  226.         END
  227.        
  228.         -- El registro se encontraba procesado.
  229.         ELSE
  230.         BEGIN
  231.             -- Establecer las variables necesarias del proceso
  232.             SET @msg='REGISTRO SE ENCONTRABA PROCESADO EN LA TABLA DE INSERCION '
  233.            
  234.             -- Actualizar el campo error tabla1 con el mensaje de error si @variable4 es 1
  235.             UPDATE tabla1
  236.             SET error=@msg
  237.             WHERE @variable1=campo1
  238.        
  239.         END
  240.        
  241. END

Última edición por dfss; 05/04/2013 a las 20:40 Razón: para que el codigo sea mas entendible