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

Problema con una Función

Estas en el tema de Problema con una Función en el foro de SQL Server en Foros del Web. Amigos necesito de su ayuda, tengo un problema con una funsion me pueden ayudar. el asunto va asi, tengo la siguiente funsion ALTER FUNCTION [dbo].[DameFecha] ...
  #1 (permalink)  
Antiguo 02/01/2008, 12:20
Avatar de Romi28x  
Fecha de Ingreso: octubre-2007
Mensajes: 185
Antigüedad: 16 años, 7 meses
Puntos: 0
Problema con una Función

Amigos necesito de su ayuda, tengo un problema con una funsion me pueden ayudar.

el asunto va asi, tengo la siguiente funsion

ALTER FUNCTION [dbo].[DameFecha]
(@tabla varchar(12),@campo varchar(12),@condicion varchar(30), @paran numeric)

RETURNS datetime

AS

BEGIN
DECLARE @f datetime,@sql varchar(400)
select @f=@campo + ' from ' + @tabla + ' where ' + @condicion + ' = ' + cast(@paran as varchar(20))
RETURN @f
END


acá lo que quiero es recuperar el campo de fecha de cualquier tabla, para ello a la func le paso el nombre de la tabla, el nombre del campo a devolver, el filtro y el parámetro
pero me manda el siguiente error..Error de conversión al convertir una cadena de caracteres a datetime.

aca lo que le entiendo que como lo que voy a devolver es un datetime y la consulta va dentro de una cadena por eso me da el error... bueno alguien me puede ayudar.

gracias
  #2 (permalink)  
Antiguo 02/01/2008, 12:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Re: Problema con una Funsion

Romi

Debes utilizar QUERY DINAMICO, si quieres substituir el NOMBRE DE TU TABLA, lo que me queda duda, es si desde una funcion puedas ejecutar el store SP_EXECUTESQL, para ejecutar tu sentencia
  #3 (permalink)  
Antiguo 02/01/2008, 14:03
Avatar de Romi28x  
Fecha de Ingreso: octubre-2007
Mensajes: 185
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Problema con una Función

Es que lo que intento es que mi función sea dinamica para cualquier tabla, al pasarle los paramentos que la func.. me devuelva el contenido del campo fecha esa tabla cualquiera que en ese momento este consultando.

por ejemplo si yo hago esto ...
set @sql='select ' + @campo + ' from ' + @tabla + ' where ' + @condicion + '=' + cast(@p1 as varchar(20))
print @sql

la variable @sql lleva la cadena o el querry que quiero se ejecute supongamos que la consulta es esta..
select fechaIngreso from empleado where id=1 esto me tendia que devolver la fecha de ingreso. pero como la consulta esta dentro de una cadena me devuelve el error Error de conversión al convertir una cadena de caracteres a datetime. por que la funcion esta esperando un datetime.
  #4 (permalink)  
Antiguo 02/01/2008, 16:56
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Re: Problema con una Función

Correcto, solo que para ejecutar una cadena que tiene instrucciones T-SQL y que esta te devuelva un valor, primero, la cadena debe ser declarada con NVARCHAR y segundo, debes ejecutarla con SP_EXECUTESQL, aqui es donde no se si la fucion te permita ejecutar dicha cadena.

Consulta en tu ayuda en linea la correcta utilizacion del SP_EXECUTESQL
  #5 (permalink)  
Antiguo 03/01/2008, 07:11
Avatar de Romi28x  
Fecha de Ingreso: octubre-2007
Mensajes: 185
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Problema con una Función

ok veré que me encuentro en linea, gracias por la ayuda, si lo resuelvo por ahí te cuento como es el asunto.
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:51.