Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] llamar a varios procedimientos almacenados mediante un trigger en sql server 2008

Estas en el tema de llamar a varios procedimientos almacenados mediante un trigger en sql server 2008 en el foro de SQL Server en Foros del Web. Como se encuentran quisiera saber como seria una forma de llamar varios procedimientos almacenados desde un trigger despues de la insercion de una tabla si ...
  #1 (permalink)  
Antiguo 07/03/2013, 15:09
Avatar de 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
llamar a varios procedimientos almacenados mediante un trigger en sql server 2008

Como se encuentran quisiera saber como seria una forma de llamar varios procedimientos almacenados desde un trigger despues de la insercion de una tabla si no es un procedimiento q le llama al otro y asi q vaya recorriendo hasta q sea el q necesite mediante una condicion
De antemano muchas gracias por su tiempo !!!!!!
  #2 (permalink)  
Antiguo 07/03/2013, 15:50
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: llamar a varios procedimientos almacenados mediante un trigger en sql serv

Código SQL:
Ver original
  1. CREATE TRIGGER ON TABLE after INSERT
  2. AS
  3. BEGIN
  4. IF condicion1='true'
  5. EXEC procedure1
  6. IF condicion2='true'
  7. EXEC PROCEDURE 2
  8. END
algo asi??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 07/03/2013, 19:11
Avatar de 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 amigo la tardanza si algo
solo q va algo asi
CREATE TRIGGER ejecutar proceso ON TABLE after INSERT
AS
begin
declare @vprocesoa varchar (30)
.
.
.
.
.

IF @vprocesoa='CREAR'
exec procedure1
IF @vprocesoa='MODIFICAR'
exec procedure 2
end

algo asi es amigo solo q son para 7 procesos los cuales tienen sus respectivos procedimientos almacenaods quisiera saber si se puede hacer con CASE en vez de if saludos y gracias por responder
  #4 (permalink)  
Antiguo 07/03/2013, 20:17
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: llamar a varios procedimientos almacenados mediante un trigger en sql serv

Los triggers, no son para lo que tu deseas hacer, deberías invocar estos procedimientos directamente desde el procedimiento que afecta la tabla en cuestion
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 08/03/2013, 00:11
Avatar de 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

es q se supone que al rato de insertar registros a esa tabla1 con el trigger se dispara y llama a cualquiera de los procedimientos almacenados que ellos se encargarian a su vez de insertar datos a otra tabla2 o tabla3 saludos !!!!!!!

Última edición por dfss; 08/03/2013 a las 08:54
  #6 (permalink)  
Antiguo 08/03/2013, 09:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: llamar a varios procedimientos almacenados mediante un trigger en sql serv

para lo que quieres no se puede hacer con CASE.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 28/03/2013, 09:42
Avatar de 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

ya solucione mi problema muchas gracias por la ayuda
  #8 (permalink)  
Antiguo 29/03/2013, 17:00
Avatar de abel_c_b  
Fecha de Ingreso: junio-2008
Mensajes: 103
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: llamar a varios procedimientos almacenados mediante un trigger en sql serv

Hola dfss, sería recomendable que explicaras como lo solucionaste...
  #9 (permalink)  
Antiguo 05/04/2013, 20:34
Avatar de 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
  #10 (permalink)  
Antiguo 10/04/2013, 12:20
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: llamar a varios procedimientos almacenados mediante un trigger en sql serv

Cita:
Iniciado por dfss Ver Mensaje
es q se supone que al rato de insertar registros a esa tabla1 con el trigger se dispara y llama a cualquiera de los procedimientos almacenados que ellos se encargarian a su vez de insertar datos a otra tabla2 o tabla3 saludos !!!!!!!
Si y solo si, dejaras que se hicieran INSERT's mediante el management studio y eso, son PESIMAS PRACTICAS.
__________________
MCTS Isaias Islas
  #11 (permalink)  
Antiguo 10/04/2013, 16:04
Avatar de 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

Pero es q una aplicacion es la que se va a encargar de insertar esos registros en la tabla y de ahi se llamaria la procedimiento almacenado correspondiente
  #12 (permalink)  
Antiguo 10/04/2013, 17:22
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: llamar a varios procedimientos almacenados mediante un trigger en sql serv

Entonces, si el aplicativo va a ejecutar el PROCEDIMIENTO que va a insertar, esta misma aplicación debe ejecutar los procedimientos que mencionas.

Si tu aplicativo, realiza directamente el INSERT, peor aun, no cumple con la regla de tres capas.
__________________
MCTS Isaias Islas

Etiquetas: procedimiento_almacenado, server, sql, sql-server-2008, sql2008, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:40.