Ver Mensaje Individual
  #1  
Antiguo 14-02-2005
cso2000 cso2000 is offline
Miembro
 
Registrado: may 2003
Ubicación: Guadalajara, Jalisco
Posts: 108
Reputación: 22
cso2000 Va por buen camino
Pasar como parametro el where en una funcion

Saludos a todos:

En esta ocacion mi problema es el siguiente, Tengo una fucion creada en Sql Server que funciona Correctamente, pero es muy lenta la ejecucion ya que el servidor ejecuta la sentencia sql que contiene la funcion y despues al resultado aplica el filtro.

Me explico:

Código SQL [-]
Create Function Query1()
Returns @Reporte TABLE (
  Campo1 Varchar(10),
  Campo Varchar(10) )
AS
BEGIN
  Insert @Reporte
  SELECT Campo1,Campo2 FROM MiTabla
END

y esta funcion la llamo de esta forma

Código:
Select * From Query1() Where Campo1 = 'CONDICION'
Ok, Como les comentaba esta consulta es lenta por que la funcion orimero consulta todos los datos de la tabla y depues filtra el resultado, Intente pasa la clausula Where como parametro de la funcion pero me marco error,

Lo que hize fue esto:

Código SQL [-]
Create Function Query1(@Where AS Varchar(255))
Returns @Reporte TABLE (
  Campo1 Varchar(10),
  Campo Varchar(10) )
AS
BEGIN
  Insert @Reporte
  SELECT Campo1,Campo2 FROM MiTabla
  +@WHERE
END

y La llamada quedo como sigue:

Código:
Select * From Query1('Where Campo1 = '''CONDICION'')
Si alguien tiene una idea de cual pueda ser el error les agradesco de antemano sus Comentarios
Responder Con Cita