use AdventureWorks CREATE FUNCTION dbo.DayOnly( @Date datetime ) RETURNS VARCHAR(12) AS BEGIN RETURN CONVERT(VARCHAR(12),@Date,101) END SELECT OBJECTPROPERTY(OBJECT_ID('DayOnly'),'IsDeterministic') SELECT dbo.DayOnly(GETDATE()) ALTER FUNCTION dbo.DayOnly( @Date datetime ) RETURNS VARCHAR(12) WITH SCHEMABINDING AS BEGIN RETURN CONVERT(VARCHAR(12),@Date,101) END SELECT OBJECTPROPERTY(OBJECT_ID('DayOnly'),'IsDeterministic') SELECT dbo.DayOnly(GETDATE()) CREATE FUNCTION dbo.fnContactList() RETURNS TABLE AS RETURN (SELECT ContactID,LastName + ', ' + FirstName AS Name, EMailAddress AS email FROM Person.Contact) SELECT * FROM fnContactList() CREATE FUNCTION dbo.fnContactSearch(@LastName nvarchar(50)) RETURNS TABLE AS RETURN (SELECT ContactID,LastName + ', ' + FirstName AS Name, EMailAddress AS email FROM Person.Contact WHERE LastName LIKE @LastName + '%') SELECT * FROM fnContactSearch('Ad') ALTER FUNCTION dbo.fnGetReports( @EmployeeID as int ) RETURNS @Reports TABLE ( EmployeeID int not null, ManagerID int null ) AS BEGIN DECLARE @Employee AS INT INSERT INTO @Reports SELECT EmployeeID,ManagerID FROM HumanResources.Employee WHERE EmployeeID = @EmployeeID SELECT @Employee = MIN(EmployeeID) FROM HumanResources.Employee WHERE ManagerID = @EmployeeID WHILE @EmployeeID IS NOT NULL BEGIN INSERT INTO @Reports SELECT * FROM fnGetReports(@EmployeeID) SELECT @Employee = MIN(EmployeeID) FROM HumanResources.Employee WHERE EmployeeID > @Employee AND ManagerID = @EmployeeID END RETURN END GO SELECT * FROM fnGetReports(12)