`

Oracle_学习开发子程序_函数

阅读更多
一、开发函数
函数用于返回特定数据,如果在应用程序中经常需要返回特定数据,可以基于操作建立一个函数,通过使用函数,不仅可以简化客户端程序的开发和维护,而且还可以提高应用程序的性能,语法如下:
create [or replace]function function_name   
(argument1[mode] dateType1,argument2[mode] dateType2........)
return dateType  
IS/AS    
PL/SQL block 

如上所示:function_name用于指定函数名称,argument1、argument2用于指定函数的参数,mode用于指定参数模式,dateType1、dateType2用于指定函数参数类型;IS/AS用于表示开始一个PL/SQL块。当指定参数类型时不能指定参数长度,另外当建立函数时即可以指定输入参数(IN),也可以指定输出参数(OUT),又可以指定输入输出参数(INOUT),return子句用于指定函数返回值的数据类型。当建立函数时,在函数头部必须要带有return子句,在函数体内至少要包括一条return 语句,
1、建立函数:不带任何参数
create or replace function function_test
return varchar2
is
v_name varchar2(10);
begin
select name into v_name from cip_temps where id=29;
return v_name;
end;

调用函数,代码如下:
SQL> var name varchar2(10)
SQL> exec :name:=function_test1;
SQL> print name;

2、建立函数:带有IN参数
当创建函数时,可以通过输入参数将应用程序的数据传递到函数中,最终通过执行函数将结果返回到应用程序中。当定义函数参数时,如果不指定函数模式,则默认为输入参数,所以IN关键字可写可不写。
create or replace function function_in(v_id number)
return varchar2
is
v_name varchar2(10);
begin
select name into v_name from cip_temps where id=v_id;
return v_name;
end;

调用函数,代码如下:
SQL> var name varchar2(10)
SQL> exec :name:=function_in(29);
SQL> print name;

3、建立函数:带有OUT参数
一般情况下,函数之需要返回单个数据,如果希望使用函数同时返回多个数据,则就需要使用OUT参数了。
create or replace function function_out
(v_id number,v_age out varchar2)
return varchar2
is
v_name varchar2(10);
begin
select name,age into v_name,v_age from cip_temps where id=v_id;
return v_name;
end;

该函数带有OUT参数,所以不能在SQL语句中调用该函数,必须通过定义变量接受OUT参数和函数的返回值。
调用函数,代码如下:
SQL> var name varchar2(10)
SQL> var age varchar2(10)
SQL> exec :name:=function_out(29,:age);
SQL> print name age;

4、建立函数:带有IN OUT参数
定义函数时,不仅可以定义IN和OUT参数,也可以指定IN OUT参数,IN OUT参数为输入输出参数,当使用这种参数时,在调用函数之前需要通过变量给该参数传递数据,在调用结束之后,oracle会通过该变量将过程结果传递给应用程序,示例如下:
create or replace function function_inout
(num1 number,num2 in out number)
return number
is
v1 number;
v2 number;
begin
  v1:=num1+num2;
  v2:=num1*num2;
  num2:=v2;
  return v1;
end;
/

该函数带有OUT参数,所以不能在SQL语句中调用该函数,必须通过定义变量接受OUT参数和函数的返回值。
调用函数,代码如下:
SQL> var num1 number
SQL> var num2 number
SQL> exec :num2:=10;
SQL> exec :num1:=function_inout(10,:num2);
SQL> print num1 num2;

5、函数调用限制
并不是所有的函数都可以在SQL语句下调用,在SQL语句中调用函数有以下限制:
(1)、在SQL语句中只能调用存储函数(服务器端),而不能调用客户端函数。
(2)、在SQL语句中调用的函数只能带有输入参数(IN),而不能带有输出参数(OUT)和输入输出参数(IN OUT)。
(3)、在SQL语句中调用的函数不能包括INSERT、UPDATE和DELETE语句。
(4)、在SQL语句中调用的函数只能使用SQL语句所支持的标准数据类型,而不能使用PL/SQL的特有数据类型(例如:BOOLEAN,TABLE和RECODE)。
二、开发触发器
Oracle_学习开发子程序_触发器
分享到:
评论

相关推荐

    oracle子程序和程序包

    oracle子程序和程序包(主要对oracle存储过程和函数作了讲解),里面有详细的例子。

    Oracle_Database_11g完全参考手册.part3/3

    通过学习《Oracle Database 11g完全参考手册》,您可以了解如何实现最新的安全措施,如何调优数据库的性能,如何部署网格计算技术。附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 ...

    Oracle_Database_11g完全参考手册.part2/3

    通过学习《Oracle Database 11g完全参考手册》,您可以了解如何实现最新的安全措施,如何调优数据库的性能,如何部署网格计算技术。附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 ...

    oracle子程序的创建与测试

    利用VMware workstation 虚拟机,Windows 2003,oracle 9i,进行表的创建和插入数据、函数和存储过程的创建以及测试过程

    用VC++开发Oracle数据库应用程序详解

    在VC中使用PRO*C时,先用PRO*C编写所需的操作数据库的子程序,再运行PRO*C预编译程序把PRO*C源程序转成相应的.CPP源程序,将该程序插入到用户工程文件中,并在需要对插入函数进行调用的模块中说明函数,然后就可以在...

    oracle 9i课件

    PL_SQL函数过程程序包触发子;PL_SQL函数过程程序包触发子(蓝色);SQL结构查询语句简介;备份与恢复;表的连接、多表查询、视图的运用;表数据操作;表数据的查询;大型数据库设计原则(工程硕士补充);第3章 oracle数据库...

    Oracle Database 11g 标准课程第十一章 开发子

    Oracle Database 11g 标准课程第十一章 开发子程序和包函数-1

    Oracle数据库经典学习教程

    子查询和常用函数 48 1. 子查询 49 2. Oracle中的伪列 51 3. Oracle函数 54 4. 本章总结 62 5. 本章练习 63 表空间、数据库对象 66 1. Oracle数据库对象 67 2. 同义词 67 3. 序列 70 4. 视图 72 5. 索引 74 6. 表...

    Oracle经典教程(oracle 10g版本11g未找到)

    很多人没有学习Oracle就开始发怵,因为人们在误解Oracle,认为Oracle太难学了,认为Oracle不是一般人用的数据库,其实任何数据库对应用程序研发人员来说,都是大同小异,因为目前多数数据库都支持标准的SQL。...

    Oracle存储过程和自定义函数详解

    PL/SQL中的过程和函数(通常称为子程序)是PL/SQL块的一种特殊的类型,这种类型的子程序可以以编译的形式存放在数据库中,并为后续的程序块调用。 相同点: 完成特定功能的程序 不同点:是否用return语句返回值。 ...

    《Oracle数据库开发实用教程》电子教案

    总 目 录 第1章 数据库引论 ...第5章 PL/SQL程序块 第6章 存储过程与函数 第7章 PL/SQL包与触发器 第8章 数据库对象 第9章 权限、角色与用户 第10章 Oracle数据库的逻辑备份 第11章 数据库设计过程与方法

    Oracle 10g应用指导

    包括加密Oracle子程序,存储应用程序用户名和口令,禁止修改删除数据库对象,Oracle数据加密以及丢失SYSMAN及资料档案库用户口令的解决方法。书中给出了丰富的图表,多数图例是作者根据多年实践总结出来的,图示简练...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。 四、 如何学习 认真听课、多思考问题、多动手操作、有问题一定要问、多参与讨论、多帮组同学 五、 体系结构 ...

    oracle学习资料

    §7.5 子程序重载 13 §7.6 删除过程、函数和包 13 §7.7 包的管理 13 第八章 触发器 13 §8.1 触发器类型 13 §8.1.1 DML触发器 13 §8.1.2 替代触发器 13 §8.1.3 系统触发器 13 §8.2 创建触发器 13 §8.2.1 ...

    Oracle8i_9i数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    Oracle数据库管理员技术指南

    1.6.1 利用 Oracle 安装程序创建数据库 1.6.2 使用安装程序创建数据库的注意 事项 1.6.3 怎样建立自己的定制数据库创建 脚本 1.6.4 如何从已有数据库克隆数据库 1.6.5 怎样利用 Database Configuration ...

Global site tag (gtag.js) - Google Analytics