存储过程与自定义函数

存储过程说白了就是一堆 SQL 的合并。
中间加了点逻辑控制。
处理比较复杂的业务时比较实用。
运行效率提高
优势:
1.只在创造时进行编译,
  以后每次存储过程都不用在编译,
  而sql语句每执行一次就编译一次,
  所以可提高数据库执行速度
2.数据库进行复杂操作时,
  可将此复杂操作用存储过程封装起来
  与事务处理结合一起使用
3.存储过程可以重复使用,
  减少开发量
4.安全性高,
  可设定只有某个用户才具有使用权

create procedure PeoProc2
@pname nvarchar(30)
as;
begin
select work.job
from work,people
where people.id=work.id and people.name=@pname
end
go
execute PeoProc2 N'宋江';

自定义函数
create function FUNC_UserTab_1
(
    @pname nvarchar(30)
)
returns table
as
return (select work.job
        from work,people
        where people.id=work.id and people.name=@pname
        )

select * from dbo.FUNC_UserTab_1('吴用')

一、自定义函数:
1. 可以返回表变量
2. 限制颇多,
    包括不能使用output参数;
    不能用临时表;
    函数内部的操作不能影响到外部环境;
    不能update,delete,数据库表;
3. 必须return 一个标量值或表变量

自定义函数一般用在复用度高,功能简单单一,争对性强的地方。

二、存储过程
1. 不能返回表变量
2. 限制少,
   可以执行对数据库表的操作,
   可以返回数据集
3. 可以return一个标量值,
    也可以省略return

存储过程一般用在实现复杂的功能,数据操纵方面。

原文地址:https://www.cnblogs.com/qq424441031/p/6526549.html