存储过程和函数的区别

---------------------------------------------------存储过程--------------------------------------

--1、存储过程定义中的参数可以为任意数据类型,包括用户定义的类型,同时过程还可以拥有输出参数,用于返回任何数据类型的结果。

--2、存储过程只能直接返回整型值,通常用于显示过程执行的状态。

--3、在存储过程定义中可以包含任何T-SQL 语句,可以向用户返回查询的结果集,允许递归(最大32 层),可以创建/ 引用临时表。

--4、存储过程的参数有默认值时,只要在调用存储过程时不指定该参数的值或将DEFAULT 关键字指定为该参数的值,即可使用默认值。

--5、存储过程不能用于表达式、计算列、DEFAULT 约束和CHECK 约束中。

--6、系统内置的存储过程有以下特点:其名称以sp_ 开头,存储在MASTER 数据库中。并且符合以上条件的用户定义存储过程可以在任何数据库下,不需要提供四部分名,即可被调用。

----------------------------------------------------------------------------------------------------------------------

---------------------------------------------------函数---------------------------------------------------

--1、函数定义中的参数不能是  timestamp cursor table 和用户定义的数据类型,且没有输出参数。

--2、函数可以直接返回除LOB cursor table timestamp   外任何数据类型的值。

--3、在函数定义中不能有修改函数外对象的T-SQL 语句,不能向用户返回任何结果集,不允许递归,不能创建/ 引用临时表。

--4、函数的参数有默认值时,在调用函数时必须将DEFAULT 关键字指定为该参数的值,才可以使用默认值。

--5、函数可以用于表达式、计算列、DEFAULT 约束和CHECK 约束中。

--6、系统内置的函数有以下特点:其名称以fn_ 开头,名称都是小写字母,存储在MASTER 数据库中,其所有者为system_function_schema 。在调用系统内置的表值函数时,需要加:: 前缀。需要启用allow updates 服务器选项,才能将用户定义函数的所有者定义为  system_function_schema

----------------------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值