Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > SQL Server

Respuesta
 
Herramientas Desplegado
Antiguo 02-ene-2008, 11:20   #1 (permalink)
Romi28x ha deshabilitado el karma
 
Avatar de Romi28x
 
Fecha de Ingreso: octubre-2007
Mensajes: 114
Triste 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
Romi28x está desconectado   Responder Citando
Antiguo 02-ene-2008, 11:41   #2 (permalink)
Colaborador
iislas ha deshabilitado el karma
 
Fecha de Ingreso: julio-2007
Mensajes: 1.415
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
iislas está desconectado   Responder Citando
Antiguo 02-ene-2008, 13:03   #3 (permalink)
Romi28x ha deshabilitado el karma
 
Avatar de Romi28x
 
Fecha de Ingreso: octubre-2007
Mensajes: 114
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.
Romi28x está desconectado   Responder Citando
Antiguo 02-ene-2008, 15:56   #4 (permalink)
Colaborador
iislas ha deshabilitado el karma
 
Fecha de Ingreso: julio-2007
Mensajes: 1.415
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
iislas está desconectado   Responder Citando
Antiguo 03-ene-2008, 06:11   #5 (permalink)
Romi28x ha deshabilitado el karma
 
Avatar de Romi28x
 
Fecha de Ingreso: octubre-2007
Mensajes: 114
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.
Romi28x está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 11:08.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93