LISTING 1: Returning Data into a Table Variable CREATE TABLE dbo.UDFTestTable (Col1 int, Col2 nvarchar(10)) GO INSERT dbo.UDFTestTable(Col1,Col2) VALUES (1, N'One') INSERT dbo.UDFTestTable(Col1,Col2) VALUES (2, N'Two') INSERT dbo.UDFTestTable(Col1,Col2) VALUES (3, N'Three') INSERT dbo.UDFTestTable(Col1,Col2) VALUES (4, N'Four') GO CREATE FUNCTION dbo.UDFReturnsTable (@MinRange int = 1, @MaxRange int = 4) -- Procedure B RETURNS TABLE AS RETURN(SELECT A.Col2 AS N'TextNumber' FROM dbo.UDFTestTable AS A WHERE A.Col1 BETWEEN @MinRange AND @MaxRange) GO CREATE PROCEDURE dbo.MySP_CallsUDF -- Procedure A AS DECLARE @MyTableVar TABLE (MyTextName NVARCHAR(10)) -- Call the UDF. Note the use of the explicit default value. INSERT @MyTableVar SELECT A.TextNumber FROM dbo.UDFReturnsTable(2,default) AS A SELECT * FROM @MyTableVar GO -- And see what happens. EXEC dbo.MySP_CallsUDF