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 

 


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页