Introducir parámentros a una funciones creadas por el Usuario del tipo tabla

22/12/2003 - 13:26 por Alfonso Garcia | Informe spam
Hola Grupo, he crado la siguiente función:

CREATE FUNCTION dbo.Funcion_1
(
@Fecha datetime,
@Clase_Iva varchar(1)
)
RETURNS TABLE

AS

RETURN
(
SELECT TOP 1 TipoIva
FROM Configuración.dbo.[Tipos Iva]
WHERE (FechaEntradaVigor <= @fecha) AND ([Clase Iva] = @Clase_iva)
ORDER BY FechaEntradaVigor DESC
)

El problema que tengo es cómo puedo meter los parámetros @fecha y
@clase_iva de la función cuando esos parámetros son campos de otra tabla. .
Me explico mejor, puedo llamar a la función sin problemas de la siguiente
forma:
SELECT * Funcion_1('01/01/03','G') Función_1
Pero si quiero que la @fecha sea un campo de otra tabla no me deja porque
me da el error : "Lista de parámetros imcompleta. Un ejemplo:
SELECT Funcion_1.TipoIva, dbo.Cabeceras.Fecha
FROM dbo.Funcion_1(dbo.Cabeceras.Fecha, 'G') Funcion_1 CROSS
JOIN
dbo.Cabeceras

Un saludo,

Alfonso J
 

Leer las respuestas

#1 Miguel Egea
22/12/2003 - 14:05 | Informe spam
En tu caso yo crearía esa función como escalar y no como tipo tabla, así la
podrías poner en la parte de lselect y no en el from. Con esto, hay que
tener cuidado de todas formas ya que algunas veces lejos de obtener un
rendimiento aceptable matamos el rendimiento. Pruebalo y si efectivamente es
así, formula el problema completo (con los script necesarios para que
podamos probarlo) y te podemos proponer una solución.

Saluods
Miguel Egea

Saludos

Miguel Egea
Microsoft SQL-SERVER MVP
Brigada Anti-Cursores
"Alfonso Garcia" escribió en el mensaje
news:
Hola Grupo, he crado la siguiente función:

CREATE FUNCTION dbo.Funcion_1
(
@Fecha datetime,
@Clase_Iva varchar(1)
)
RETURNS TABLE

AS

RETURN
(
SELECT TOP 1 TipoIva
FROM Configuración.dbo.[Tipos Iva]
WHERE (FechaEntradaVigor <= @fecha) AND ([Clase Iva] @Clase_iva)
ORDER BY FechaEntradaVigor DESC
)

El problema que tengo es cómo puedo meter los parámetros @fecha y
@clase_iva de la función cuando esos parámetros son campos de otra tabla.


.
Me explico mejor, puedo llamar a la función sin problemas de la siguiente
forma:
SELECT * Funcion_1('01/01/03','G') Función_1
Pero si quiero que la @fecha sea un campo de otra tabla no me deja


porque
me da el error : "Lista de parámetros imcompleta. Un ejemplo:
SELECT Funcion_1.TipoIva, dbo.Cabeceras.Fecha
FROM dbo.Funcion_1(dbo.Cabeceras.Fecha, 'G') Funcion_1 CROSS
JOIN
dbo.Cabeceras

Un saludo,

Alfonso J


Preguntas similares