Pero, pero, pero (continuaban…):Se puede llamar una UDF directamente? osea, sin necesidad de usarla desde un SP?
La razón que argumentaban era que querían testear las funciones y se veían en la engorrosa necesidad de meterla en un SP cada vez que querían testear la función.
Mi respuesta fue: hmmm… de poder se puede, y sería así:
1.- Creen una UDF, digamos algo como esto
CREATE FUNCTION [dbo].[risk_user_GetDescription]
(@userid int)
RETURNS varchar(150)
AS
BEGIN
RETURN
(
SELECT [FirstName] + ' ' + [LastName])
FROM [dbo].[risk_user]
WHERE [userid] = @userid
)
END
Esta UDF es muy senclla: simplemente devuelve el nombre de un usuario, recibiendo como parámetro el ID de usuario.
2.- Ahora, cómo lo llamo directamente?
Si están en el SQL SERVER Management Studio, simplemente presionen el botón Nueva consulta y tipeen
SELECT [dbo].[risk_user_GetDescription](1)
Luego presionen F5 para que se ejecute la consulta. Verán que se originan resultados.
Si se dan cuenta, es muy simple: sólo añadí un SELECT antes del nombre de la UDF y al final simplemente le pasé el parámetro que requiere la función.
Si quisieras hacer lo mismo ( llamar una UDF directamente ) desde el Visual Studio, también se puede. Simplemente harías esto:
Dim connection As New SqlConnection("server=.\SQLEXPRESS;database=midatabase;uid=sa;pwd=") Dim command As New SqlCommand("SELECT [dbo].[risk_user_GetDescription](1)", connection) command.CommandType = CommandType.Text connection.Open() Dim NombreDeUsuario As String = DirectCast(command.ExecuteScalar(), String) connection.Close()
Lo que hace este código es llamar a la UDF directamente, y la variable NombreDeUsuario es la que recibe el resultado.
Yo he hecho el ejemplo con una función que devuelve un string, les dejo como tarea a Uds el que traten con funciones que devuelven otros tipos de datos.
;)
No hay comentarios.:
Publicar un comentario