Oracle(十一)PL/SQL 存储函数 & 存储过程
来源:互联网 发布:网络分离器哪个牌子好 编辑:程序博客网 时间:2024/05/18 18:18
一、前言
ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它,这样就叫存储过程或函数。过程和函数统称为 PL/SQL 子程序,他们是被命名的 PL/SQL 块,均存储在数据库中,并通过输入、输出参数或输入/输出参数参与其调用者交换信息。过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据。
[存储函数:有返回值,创建完成后,通过select function() from dual;执行]
[存储过程:由于没有返回值,创建完成后,不能使用select语句,只能使用pl/sql块执行]
二、创建存储函数
格式如下:
create [or replace] function function_name
[ argument [ {in | in out }] TYPE,
argument [ {in | out | in out} ] TYPE ]
[AUTHID DEFINER | CURRENT_USER]
RETURN return_type;
{ IS | AS }
<类型,变量的说明>
BEGIN
FUNCTION_BODY
EXCEPTION
其他语句
END;
注:参数类型无需指定大小
说明:
-- (1)or replace 为可选,有了它,可以或创建一个新函数或者替换相同名字的函数,而不会出现冲突。
-- (2)函数名后面是一个可选的参数列表,其中包含 IN , OUT 或 IN OUT 标记,参数之间用逗号隔开。IN 参数标记表示传递给函数的值在该函数执行中不改变;OUT 标记表示一个值在函数中进行计算并通过该函数传递给调用语句;IN OUT 标记表示传递给函数的值可以变化并传递给调用语句。若省略标记,则参数隐含为 IN。
-- (3)因为函数需要返回一个值,所有 RETURN 包含返回结果的数据类型。
三、示例代码
例1:
显示:Function created
输出语句及结果:
或采取如下输出方式:
例2:
输出语句及显示结果如下:
例3:两个值相加
查询语句及结果如下:
例4:
查询语句及显示结果如下:
** OUT 型的参数:因为函数只能有一个返回值,PL/SQL 可以通过 OUT 型参数实现多个值的返回
例1:
查询结果:
显示结果如下:
一个返回值,但通过 out 参数作为(相当于)因变量在过程当中赋值并进入函数被记录下来。通过在调用时给 out 参数赋值(v_num number(8):= 0),使得一个函数得到两个想获取的值。
三、创建存储过程
1、建立存储过程
在 ORACLE SERVER 上建立存储过程,可以被多个应用程序调用,可以向存储过程传递参数,也可以向存储过程返回参数。
创建过程的语法:
2、示例
例1:
查询语句及显示结果
注:无返回值,不需要 dbms_output... 存储过程类似 JAVA 中的 void
例2:
注:pl/sql 中字符串可以比较大小,但限定为纯数字!
查询语句及显示结果如下:
0 0
- Oracle(十一)PL/SQL 存储函数 & 存储过程
- 二十一、oracle pl/sql分类一 存储过程
- 二十一、oracle pl/sql分类一 存储过程
- 二十一、oracle pl/sql分类一 存储过程
- Java,PL/SQL调用 ORACLE存储函数以及存储过程
- oracle PL/SQL 存储过程
- Oracle PL/SQL 存储过程
- PL/SQL-存储过程、函数
- PL-SQL 存储函数和存储过程
- PL/SQL存储函数,存储过程
- PL/SQL 存储过程和存储函数
- PL/SQL语言&存储过程&存储函数
- ORACLE PL/SQL编程存储过程与函数
- oracle存储过程、函数、PL/SQL块、动态游标
- Oracle PL/SQL存储过程,函数,包,触发器的使用
- oracle中pl/sql编程---存储过程,函数,触发器,包
- PL/Sql Dev调试Oracle存储过程、触发器、函数
- ORACLE PL/SQL编程存储过程与函数
- [ITU]H.264标准下载地址-HEVC(H.265)标准下载地址-一致性码流下载地址
- HttpServletResponse中sendError与setStatus的区别
- 字符流中第一个不重复的字符
- 如何设置CentOS 5的yum源[上海交通大学http://ftp.sjtu.edu.cn/centos/5.0/os/x86_64]
- 利用递归实现求n位所有格雷码
- Oracle(十一)PL/SQL 存储函数 & 存储过程
- 3D Transformations
- 类和类之间属性复制,必须存在get和set方法的属性才可以复制
- DBCP连接池
- 初识App Inventor 2(AI2)
- 使QT内建的对话框文字显示为中文 window7+vs2010+qt
- 修改浏览器的User-Agent来伪装你的浏览器和操作系统
- (Google)TextView属性大全(API-16)
- 【算法】在整数数组求中出两两之差绝对值最小的值