¿Puedo llamar a una función escalar dentro de una función con valores de tabla?Función dentro de una función TSQL
Gracias
¿Puedo llamar a una función escalar dentro de una función con valores de tabla?Función dentro de una función TSQL
Gracias
Sí, con tal de que la función con valores de tabla devuelve una tabla cuando esté hecho.
Las funciones definidas por el usuario se pueden anidar; es decir, una función definida por el usuario puede llamar a . El nivel de anidamiento es incrementado cuando la función llamada se inicia la ejecución y disminuye cuando la función llamada finaliza la ejecución . Las funciones definidas por el usuario pueden anidarse hasta en 32 niveles. Excediendo los niveles máximos de anidamiento causan toda la cadena de función de llamada a falla. Cualquier referencia al código administrado de una función de Transact-SQL definida por el usuario cuenta como un nivel contra el límite de anidación de 32 niveles. Los métodos invocados desde el código administrado do no cuentan contra este límite.
http://msdn.microsoft.com/en-us/library/ms186755.aspx
Esto es muy simplista, pero funciona:
--DROP FUNCTION RETURN_INT
--GO
CREATE FUNCTION RETURN_INT()
RETURNS INT
WITH EXECUTE AS CALLER
AS
BEGIN
RETURN 1
END
GO
--DROP FUNCTION RETURN_TABLE
--GO
CREATE FUNCTION RETURN_TABLE()
RETURNS @Test TABLE (
ID INT
)
WITH EXECUTE AS CALLER
AS
BEGIN
INSERT INTO @Test
SELECT DBO.RETURN_INT()
RETURN
END
¿Tienes algún ejemplo ... mi uno no está funcionando ... Gracias –
No es fácilmente disponible, pero intentaré encontrar una. – kemiller2002
Gracias Kevin, eso ayudaría mucho –