存储过程与自定义函数
存储过程说白了就是一堆 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
存储过程一般用在实现复杂的功能,数据操纵方面。