存储过程和函数的区别
来源:互联网 发布:用户画像 数据挖掘 编辑:程序博客网 时间:2024/06/03 18:12
一:定义:
存储过程:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
函数:在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是: Aggregate 函数 Scalar 函数
二:存储过程和函数的基本区别见表1
存储过程
函数
作用
用于在数据中完成特定的操作或者任务
用于特定的数据
使用
可作为一个独立的PL/SQL语句来执行
不能立即执行,必须作为表达式的一部分
注意事项
SQL语句中不得调用任何存储过程
SQL语句中可以调用函数
表1
三:存储过程和函数应用时的区别
1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
4. 当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。Procedure cache中保存的是执行计划 (execution plan) ,当编译好之后就执行procedure cache中的execution plan,之后SQL SERVER会根据每个execution plan的实际情况来考虑是否要在cache中保存这个plan,评判的标准一个是这个execution plan可能被使用的频率;其次是生成这个plan的代价,也就是编译的耗时。保存在cache中的plan在下次执行时就不用再编译了。
四:实例:
存储过程:
例子:
CREATE PROCEDURE order_tot_amt
@o_id int,
@p_tot int output
AS
SELECT @p_tot = sum(Unitprice*Quantity)
FROM orderdetails
WHERE orderid = @o_id
GO
例子说明:
该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单ID号码(@o_id),由订单明细表 (orderdetails)中计算该定单销售总额[单价(Unitprice)*数量(Quantity)],这一金额通过@p_tot这一参数输出给调用这一存储过程的程序。
函数:
CREATE OR REPLACE FUNCTION get_sal
(v_id IN emp.empno%TYPE) RETURN NUMBER
IS
v_salary emp.sal%TYPE :=0;
BEGIN
SELECT sal INTO v_salary FROM emp WHERE empno = v_id;
RETURN (v_salary);
END get_sal;
- 存储过程和存储函数的区别
- 存储过程和自定义函数的区别
- 存储过程和自定义函数的区别
- 存储过程和函数的区别
- 存储过程和函数的区别
- MySQL存储过程和函数的区别
- 存储过程和函数的区别
- 存储过程和函数的区别
- oracle 函数和存储过程的区别
- Oracle函数和存储过程的区别
- SQL函数和存储过程的区别
- SQL函数和存储过程的区别
- 函数和存储过程的区别
- 函数和存储过程的区别
- 函数和存储过程的区别
- 函数和存储过程的区别
- Mysql存储过程和函数的区别
- 存储过程和函数的区别
- iOS开发之UIlabel多行文字自动换行 (自动折行)
- java 图形界面编程(一)
- linux多线程编程
- 综合应急平台-数据库系统
- std :: this_thread
- 存储过程和函数的区别
- Git使用指南
- android gdb 调试c++代码
- JDBC call Stored Procedure
- 3幅图让你了解Spring AOP
- 如何优化关键词的质量度
- gcc 链接库的顺序问题
- 正则表达式基本语法
- Camshift算法原理及程序代码