Ayuda con funcion

30/12/2005 - 17:46 por Matías | Informe spam
Hola a todos tengo que realizar una funcion(UDF) que devuelva V o F si el
select que pongo a continuacion devolvio 0 o 1 registro,
además la funcion debe recibir parámetros.

SELECT A.IDAlumno, B.[Fecha] AS FechaUltEstado
FROM Alumnos A
INNER JOIN AlumnosEstados B ON A.IdAlumno = B.IdAlumno
INNER JOIN Estados E ON B.IdEstado = E.IdEstado
WHERE B.[Fecha] = (SELECT MAX([Fecha]) FROM
AlumnosEstados D WHERE B.IdAlumno = D.IdAlumno AND B.IdAlumno @parametro1)
GROUP BY A.IDAlumno, B.[Fecha], E.IDestado
HAVING E.IDestado = @parametro2

Supongamos que la funcion se llama UdfMiFunc, entonces yo la utilizaría
desde los sp de la siguiente forma:

Select campo1, campo2
From MiTabla
Where UdfMiFunc(campo1, 15, 2) = T

Saludos y mil gracias
 

Leer las respuestas

#1 Alejandro Mesa
30/12/2005 - 20:18 | Informe spam
Matías,

Verdad que no me he detienido a pensar como hacer la función. Solo quiero
decirte que no es buena practica manipular las columnas que aparecen en la
clausula "where", de esta forma estas evitando que sql server haga un uso
adecuado de los indices, en caso de que existan.

Pudieras ser mas explicito en lo que deseas alcanzar o hacer?


AMB


"Matías" wrote:

Hola a todos tengo que realizar una funcion(UDF) que devuelva V o F si el
select que pongo a continuacion devolvio 0 o 1 registro,
además la funcion debe recibir parámetros.

SELECT A.IDAlumno, B.[Fecha] AS FechaUltEstado
FROM Alumnos A
INNER JOIN AlumnosEstados B ON A.IdAlumno = B.IdAlumno
INNER JOIN Estados E ON B.IdEstado = E.IdEstado
WHERE B.[Fecha] = (SELECT MAX([Fecha]) FROM
AlumnosEstados D WHERE B.IdAlumno = D.IdAlumno AND B.IdAlumno > @parametro1)
GROUP BY A.IDAlumno, B.[Fecha], E.IDestado
HAVING E.IDestado = @parametro2

Supongamos que la funcion se llama UdfMiFunc, entonces yo la utilizaría
desde los sp de la siguiente forma:

Select campo1, campo2
From MiTabla
Where UdfMiFunc(campo1, 15, 2) = T

Saludos y mil gracias



Preguntas similares