标量函数返回一个标量(单值)结果,可返回Timestamp,text,Ntext,Image,Table,Cursor
多语句表值函数,返回一条或多条Transact-sql语句建立的表,可在select 语句的FROM子句中被引用.
内嵌表值函数,位于RETURN子句中的SELECT命令段从数据库中摔选出来的,类似于视图但强于视图.

标量函数,在Begin...End 之间函数体,不能包非确定性系统函数.
Create Function [own_name.]function_name([{@参数名[as] 数据类型[=默认值]}[,...n]])
Returns 返回数据类型 [With <函数选项>] [As] Begin 函数体 Return 返回表达式 End

调用函数 Select Own_name.function_name[(参数值[,...n])]

多语句表值函数
Begin...End 限定了函数体,Returns指定Table作为返回的数据类型
Create Function[own)name.]function_name([{@参数名[as]数据类型[=默认值]},[,...n]])
Returns @返回变量 Table<表定义>[With<函数选项>][As] Begin 函数体 Return End

调用函数 Select * from own_name.function_name[(参数值[,...n])][where <条件>]

内嵌表值函数
Returns 子句在括号中包含单个Select语句,Returns指定table作为返回的数据类型
不必定义返回变量的格式,因为它由Return子句中的Select语句的结果集格式设置


更改函数 :Alter Function 删除函数:Drop Function
创 架构绑定函数
创建时用 SchemaBinding 则数据库对象不能更改(使用Alter 或 Drop语句)
但使用SchemaBinding必须具有对函数中引用对象的Reference权限

mssql二进制加解密, cast(@password as binary(20)) ,cast(@EPassword as varchar(20))
insert into AppUsers(UserName,password) values('tom',dbo.fn_EncryptPassword('00001'))
select username,dbo.fn_DecryptPassWord(password) from AppUsers


Create Function dbo.fn_EncryPassword(@Password varchar(20))
returns binary(20)
begin
     declare @EPassword binary(20)
     set @EPassword = cast(@Password as binary(20))
     return @ EPassword
end

Create Function dbo.fn_DecryptPassword(@EPassword binary(20))
returns varchar(20)
begin
     declare @Password varchar(20)
     set @Password = cast(@EPassword as varchar(20))
     return @Password
end

 

感谢:jude_liu