存储过程、函数、触发器

存储过程、函数、触发器的区别

比较项目 存储过程 函数

是否有返回值 可以有,也可以没有 必须有且只有一个

是否可以单独执行 可以 必须通过execute执行

SQL语句(DML或SELECT)可否调用 不可以 可以,且可以位于FROM关键字的后面(由于可以返回表对象)

参数类型 可以使用IN、OUT、IN OUT三种模式的参数 只有IN,Oracle可以使用IN、OUT、IN OUT三种参数

返回值类型 可以通过OUT、IN OUT参数返回零个或多个参数值 单一值或一个表对象

1)一般来说,存储过程实现的功能要复杂一点,而函数实现的功能针对性比较强。 2)存储过程一般是作为一个独立的部分来执行(参照下面“存储过程-调用方法”),而函数可以作为查询语句的一个部分来调用(用在select后面,或者from后面)。由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

存储过程

存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。存储过程经过语法检查和编译的SQL语句,所以执行速度比普通的SQL语句的执行速度快。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

特点缺点基本语法create procedure <过程名>(<参数列表,无参时忽略>)as|is变量声明、初始化begin业务处理、逻辑代码exception异常捕获、容错处理end <过程名>;参数:<参数名> in|out|in out <参数类型,,无长度说明> ,如:v_name varchar2in:入参out:出参in out:出入参注:as|is表示as或is调用语法

调用语法:

1)exec <过程名>;

2)execute <过程名>;

3)对于Oracle数据库,可在PL/SQL语句块中直接调用。(Oracle)

函数

数据库中的函数包括内置函数和自定义函数,内置函数是诸如SUM(),COUNT(),AVG()等数据库内置的函数。一般我们编写的函数都属于自定义函数。

特点函数只有一种参数(IN),只有一条RETURN语句,只能返回单一的值。可在SQL语句(DML或SELECT)中调用函数。由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。基本语法create function <函数名>(<参数列表,无参时忽略>)return <返回值类型,无长度说明>as|is变量声明、初始化begin业务处理、逻辑代码return <返回的值>;exception异常捕获、容错处理end <函数名>;参数:in 入参注:只有入参的类型。调用语法

1)在SQL语句(DML或SELECT)中调用函数 2)对于Oracle数据库,可在PL/SQL语句块中直接调用。(Oracle)

触发器

触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行;

贪婪是最真实的贫穷,满足是最真实的财富

存储过程、函数、触发器

相关文章:

你感兴趣的文章:

标签云: