![]() |
Executar un procedimiento dentro de un Select?
hola amigos tengo un problema.. quiero hacer una insercion en una tabla
con un select, pero hay un campo que necesito validar antes de insertarlo,, por ejemplo: Insert into Vigentes(id_empleado, vigente) select (id_empleado, {aki kiero executar la validacion de procedimuento} from empleados. mi procedimiento tiene tres variables id_empleado, fecha_i, fecha_f y me devuelve si estubo vigente o no... con el procedimiento no tengo problemas..... pero quiero insertar a cada trabajador vigente en la tabla.... ojala me puedan ayudar... saludos |
buen dia carlos
provaste ya con funciones en ves de procedimientos seria algo asi como:
Espero te sirva la idea |
Sigo Teniendo Problemas Con La Inserccion:
Este Es La Funcion: Create Function Fue_vigente_2( @id_trabajad Int, @fi Datetime, @ff Datetime) Returns Varchar(2) As Begin Declare @movimiento Varchar(1) Declare @fecha_mov Datetime Declare @fue Varchar(2) Set @movimiento='z' Select @movimiento=mov_tipo, @fecha_mov=fecha From V_trabmovi Where Id_trabajad=@id_trabajad And Fecha<=@ff And Id_trabmovi=(select Max(id_trabmovi) From Trabmovi Where Id_trabajad=@id_trabajad) If (@movimiento<>'z') Begin If (@movimiento='b' And @fecha_mov>=@fi) Set @fue='si' Else If (@movimiento='b' And (@fecha_mov<@ff Or @fecha_mov<@fi)) Set @fue='no' Else Set @fue='si' End Else Set @fue='no' Return @fue End Y Trate De Poner La Insercion Como Me Dijiste Insert Into Trabvig(id_trabajad, Vigente) Select (id_trabajad, Fue_vigente_2 (id_trabajad, '10/01/206','10/31/2006') From Trabajad Estoy Haciendo Algo Mal?? Saludos |
nesecitaria saber el error que produce el SQL, a primera vista seria la fecha que le mandas en el segundo parametro de la funcion en el select del insert
'10/01/206' seria '10/01/2006' si puedes mandar el error generado seria mas facil |
ESTA ES LA SENTENCIA
Insert Into Trabvig(id_trabajad, Vigente) Select (id_trabajad, Fue_vigente_2 (id_trabajad, GETDATE,GETDATE)) From Trabajad Y EL ERROR::::: ______________________________________ Server: Msg 170, Level 15, State 1, Line 2 Line 2: Incorrect syntax near ','. TAMBIEN LO PONGO DE ESTA MANERA Insert Into Trabvig(id_trabajad, Vigente) Select id_trabajad, FUE_VIGENTE_2 (id_trabajad, GETDATE,GETDATE) From Trabajad Y ME MANDA EL ERROR Server: Msg 195, Level 15, State 10, Line 2 'FUE_VIGENTE_2' is not a recognized function name. LA FUNCION EXISTE !!! |
ok entonces serian dos cosas:
quedaria el insert asi:
pruebalo y veamos que pasa |
Si Lo Probe Asi Y Funciono....
Deberia De Pasar Igual Con El Procedure O Sera Lo Ideal Usar La Funcion?? |
hasta donde yo se, lo cual es poco, no se puede incluir un procedimiento almacenado dentro de un select, creo yo que se deve a que un procedimiento regresa los valores por medio de variables OUTPUT, encuentro la similitud con el tratar de usar un procedimiento de Delphi dentro de un IF o dentro de la llamada a otro procedure.
me alegra, pues, que te haya sido de utilidad mi participacion |
La franja horaria es GMT +2. Ahora son las 21:51:07. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi