2008-12-12 32 views
43

Tengo una función definida por el usuario en SQL llamada getBuisnessDays que toma @startdate y @enddate y devuelve el número de días hábiles entre las dos fechas. ¿Cómo puedo llamar a esa función dentro de mi selección?Función definida por el usuario de SQL Dentro de Seleccionar

Esto es lo que me gustaría hacer ..

SELECT getBusinessDays(a.opendate,a.closedate) 
FROM account a 
WHERE ... 
+0

Recuerde que las UDF a menudo pueden matar el rendimiento de la consulta en función de cómo reaccione el optimizador. A menudo significan procesar fila por fila en lugar de hacerlo a base de conjuntos. Para su situación, es mejor que use una tabla de calendario y seleccione en contra de eso cuando sea necesario. –

Respuesta

77

sí, se puede hacer casi lo siguiente:

SELECT dbo.GetBusinessDays(a.opendate,a.closedate) as BusinessDays 
FROM account a 
WHERE... 
+5

maldita sea - pásame - necesitas el prefijo del propietario –

5

Usar una UDF, no una tabla de datos uno con valores escalares, entonces puedes usarlo en un SELECT como quieras.

5

Si se trata de una función de tabla-valor (devuelve un conjunto de mesa) sólo tiene que unirse a ella como una tabla

esta función genera una tabla de columna con todos los valores de lista separada por comas pasado

SELECT * FROM dbo.udf_generate_inlist_to_table('1,2,3,4') 
Cuestiones relacionadas