Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-10-2006
mendozasoftware mendozasoftware is offline
Registrado
 
Registrado: abr 2005
Posts: 6
Poder: 0
mendozasoftware Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 31-10-2006
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
buen dia carlos

provaste ya con funciones en ves de procedimientos

seria algo asi como:

Código SQL [-]
CREATE FUNCTION fn_valida
  (id_empleado int, 
   fecha_i datetime,
  fecha_f  datetime)
RETURNS int
AS
BEGIN
  declare @resultado int
  
  --AQUI VALIDAS
  
  RETURN @resultado

END


Insert into Vigentes(id_empleado, vigente)
  select (id_empleado, fn_valida (id_empleado, fecha_i, fecha_f)
  from empleados.

Espero te sirva la idea
Responder Con Cita
  #3  
Antiguo 31-10-2006
mendozasoftware mendozasoftware is offline
Registrado
 
Registrado: abr 2005
Posts: 6
Poder: 0
mendozasoftware Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 31-10-2006
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 31-10-2006
mendozasoftware mendozasoftware is offline
Registrado
 
Registrado: abr 2005
Posts: 6
Poder: 0
mendozasoftware Va por buen camino
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 !!!

Última edición por mendozasoftware fecha: 31-10-2006 a las 21:03:54.
Responder Con Cita
  #6  
Antiguo 31-10-2006
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
ok entonces serian dos cosas:
  1. la funcion GETDATE se ejecuta con GETDATE()
  2. y aqui el error fue mio se me olvido comentar que tienes que expresar la funcion anteponiendo el dBowner

quedaria el insert asi:


Código SQL [-]

Insert Into Trabvig(id_trabajad, Vigente)
Select id_trabajad, dbo.FUE_VIGENTE_2 (id_trabajad, GETDATE(),GETDATE())
From Trabajad

pruebalo y veamos que pasa
Responder Con Cita
  #7  
Antiguo 31-10-2006
mendozasoftware mendozasoftware is offline
Registrado
 
Registrado: abr 2005
Posts: 6
Poder: 0
mendozasoftware Va por buen camino
Si Lo Probe Asi Y Funciono....
Deberia De Pasar Igual Con El Procedure O Sera Lo Ideal Usar La Funcion??
Responder Con Cita
  #8  
Antiguo 31-10-2006
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Procedimiento Almacenado Devolver una Select granchop Firebird e Interbase 5 14-09-2006 09:57:03
procedimiento dentro de procedimiento chechu Varios 6 24-11-2005 23:34:48
SP dentro de Select buitrago_listas Firebird e Interbase 1 17-01-2005 13:43:04
for select....do en procedimiento almacenado lledesma SQL 1 23-04-2004 08:03:01
Select a procedimiento almacenado ACK Firebird e Interbase 12 19-07-2003 20:13:28


La franja horaria es GMT +2. Ahora son las 16:53:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi