In previous blog
Scalar User Defined Function in Sql Server discuss 
about scalar UDF .Now i am explaining Table Valued UDF.
Table Valued UDF is 
like views but slightly better from views. It return type is table means it can 
return more than one rows. The table returned by Table-Valued UDF can be used in 
FROM clause of a T-SQL Statements.
Illustrate with 
an Example:
First of all create 
a table tbl_login in sql server 2005 database. It has following field:
 
	
		| 
		Column Name | 
		Data Type  | 
		Description | 
	
		| 
		user_id | 
		Int | 
		Identity(1,1) Primary key | 
	
		| 
		Username | 
		varchar(50) | 
		Login user name | 
	
		| 
		Password | 
		varchar(50) | 
		Login user password | 
(A)Create Table-Valued UDF:
Here we create Table Valued UDF 
[dbo].[LoginInfo] 
for generate a unique username according his/her email address and password and 
check these user name that is already exist or not. Here Table-Valued UDF 
 [dbo].[LoginInfo]
has one parameter that is varchar(30) type.
Create
function [dbo].[LoginInfo](@email
varchar(30))
/*function Name*/
returns 
@tbl_user table(user_name
varchar(20),passowrd
varchar(20))
/* table that will be return*/
as
begin
declare @index 
int
declare 
@user varchar(20)
declare 
@pass varchar(20)
declare 
@count int
select 
@index= 
charindex('@',@email)
/* get index value where '@' 
char exist in @email variable */
select 
@user=substring(@email,0,@index)
/* Get Substring from @email variable of dynmic 
length */ 
select 
@pass= substring(@email,1,3)+
cast((select
(count(*)+100)
from tbl_login) 
as varchar(50))
 select 
@count=count(*)
from tbl_login 
where username=@user
/* check existing user in table*/
if(@count=0)
insert
into @tbl_user(user_name,passowrd)
values(@user,@pass)
return
end
(B)Implementation of  Table-Valued 
UDF:
Here Two satement one for call function dbo.LoginInfo 
and another for use to insert value intable.It mostly use in T-SQL statement 
means we can use it in  store procedure.Here we pass 
parameter in function an email address.
declare 
@username varchar(50)
declare 
@password varchar(50)
select 
@username=user_name,@password=passowrd
from dbo.LoginInfo('[email protected]')/* 
function call*/
if(@username!=' 
')/*check 
for NULL*/
insert
into tbl_login(username,password)
values(@username,@password)/*insert 
values in table*/
(C)Output of Table-Valued UDF:
select
* from 
tbl_login
	
		| 
		user_id | 
		username | 
		Password | 
	
		| 
		1 | 
		sandeep.shekhawat88 | 
		san100 |