SQL SERVER 中存储过程和函数的区别

 

存储过程 

函数

存储过程定义中的 参数可以为任意数据类型 ,包括用户定义的类型,同时过程还 可以拥有输出参数 ,用于返回任何数据类型的结果。 
存储过程只能直接 返回整型值 ,通常用于显示过程执行的状态。 
在存储过程定义中可以 包含任何 T-SQL 语句  可以向用户返回查询的结果集  允许递归 (最大 32 层), 可以创建 / 引用临时表  
存储过程的参数有默认值时,只要在调用存储过程时 不指定该参数的值 或将 DEFAULT 关键字指定为该参数的值,即可使用默认值。 
存储过程 不能用于表达式 、计算列、 DEFAULT 约束和 CHECK约束中。 
系统内置的存储过程 有以下特点:其 名称以 sp_ 开头  存储在 MASTER 数据库中 。并且符合以上条件的用户定义存储过程可以在任何数据库下,不需要提供四部分名,即可被调用。
函数定义中的 参数不能是   timestamp  cursor  table  用户定义的数据类型 ,且 没有输出参数  
函数可以 直接返回除 LOB  cursor  table  timestamp   外任何数据类型的值  
在函数定义中 不能有修改函数外对象的 T-SQL 语句  不能向用户返回任何结果集  不允许递归  不能创建 / 引用临时表  
函数的参数有默认值时,在调用函数时必须将 DEFAULT 关键字 指定为该参数的值,才可以使用默认值。 
函数可以用于表达式、计算列、 DEFAULT 约束和 CHECK 约束中。 
系统内置的函数 有以下特点:其 名称以 fn_ 开头 ,名称都是小写字母, 存储在 MASTER 数据库 中,其所有者为 system_function_schema 。在调用系统内置的表值函数时,需要加 :: 前缀。需要启用 allow updates 服务器选项 ,才能将用户定义函数的所有者定义为   system_function_schema 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值