169it科技资讯
169it -->


当前位置:  数据库>oracle

Oracle过程与函数的区别分析

    来源: 互联网  发布时间:2014-10-04

Oracle过程和函数相信大家都比较了解,下面就为您详细介绍Oracle过程和函数二者之间的区别,希望可以让您对Oracle过程和函数有更深的认识。

Oracle过程和函数都以编译后的形式存放在数据库中,函数可以没有参数也可以有多个参数并有一个返回值。过程有零个或多个参数,没有返回值。函数和过程都可以通过参数列表接收或返回零个或多个值,函数和过程的主要区别不在于返回值,而在于他们的调用方式。Oracle过程是作为一个独立执行语句调用的:

pay_involume(invoice_nbr,30,due_date);

函数以合法的表达式的方式调用:

order_volumn:=open_orders(SYSDATE,30);

创建过程的语法如下:

CREATE [ OR REPLACE] PROCEDURE [schema.]procedure_name 
[parameter_lister] 
{AS|IS} 
declaration_section 
BEGIN 
executable_section 
[EXCEPTION 
exception_section] 
END [procedure_name] 

每个参数的语法如下:

paramter_name mode datatype [(:=|DEFAULT) value]

mode有三种形式:IN、OUT、INOUT。

IN表示在调用过程的时候,实际参数的取值被传递给该过程,形式参数被认为是只读的,当过程结束时,控制会返回控制环境,实际参数的值不会改变。

OUT在调用过程时实际参数的取值都将被忽略,在过程内部形式参数只能是被赋值,而不能从中读取数据,在过程结束后形式参数的内容将被赋予实际参数。

INOUT这种模式是IN和OUT的组合;在Oracle过程内部实际参数的值会传递给形式参数,形势参数的值可读也可写,过程结束后,形势参数的值将赋予实际参数。

创建函数的语法和过程的语法基本相同,唯一的区别在于函数有RETUREN子句

CREATE [ OR REPLACE] FINCTION [schema.]function_name 
[parameter_list] 
RETURN returning_datatype 
{AS|IS} 
declaration_section 
BEGIN 
executable_section 
[EXCEPTION] 
exception_section 
END [procedure_name]

在执行部分函数必须有哟个或多个return语句。

在创建函数中可以调用单行函数和组函数,例如:

CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER) 
RETURN NUMBER 
IS  
pi NUMBER=ACOS(-1); 
RadiansPerDegree NUMBER; 
 
BEGIN 
RadiansPerDegree=pi/180; 
RETURN(SIN(DegreesIn*RadiansPerDegree)); 
END 

    
相关技术文章:
    ▪Oracle to_char函数的使用方法

     Oracle to_char函数的功能是将数值型或者日期型转化为字符型,下面就为您详细介绍Oracle to_char函数的使用,希望对您能有所帮助。 Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。 注意:所有格式化函数的第二个参数是用于转换的模板。 表 5-7. 格式化函数 函数 返回 描述 ......


    ▪Oracle to_char 日期转换字符串语句分享

     1》以12小时制显示 SQL>select to_char(sysdate,'YYYY-MM-DD HH12:MI:SS AM')from dual; TO_CHAR(SYSDATE,'YYYY-MM-DDHH1 ------------------------------ 2007-06-29 02:50:06 下午 2》以24小时制显示 SQL>  select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS AM')from dual; TO_CHAR(SYSDATE,'YYYY-MM-DDHH2 ------------------------------ 2007-06-29 15:00:58 下午 3》得到当前时间的前一分钟 select to_char(Sysdate-1/21/60,'HH24:MI:SS')from dual; TO_CHAR(SYSDATE-1/21/60,'HH24: ------------------------------ 15:00:54 4》得到当前时间的后一分钟 select to_char(Sysdate+1/21/60,'HH24:MI:SS')from dual; TO_CHAR......


    ▪深入剖析哪些服务是Oracle 11g必须开启的

     成功安装Oracle 11g数据库后,你会发现自己电脑运行速度会变慢,配置较低的电脑甚至出现非常卡的状况,通过禁止非必须开启的Oracle服务可以提升电脑的运行速度。那么,具体该怎么做呢?   按照win7 64位环境下Oracle 11g R2安装详解中的方法成功安装Oracle 11g后,共有7个服务,分别为Oracle ORCL VSS Writer Service,OracleDBConsoleorcl,OracleJobSchedulerORCL,   OracleMTSRecoveryService,OracleOraDb11g_home1ClrAgent,OracleOraDb11g_home1TNSListener,OracleServiceORCL。其中OracleDBConsoleorcl,   OracleMTSRecoveryService,OracleOraDb11g_home1TNSListener,OracleServiceORCL是默认自动启动的,OracleJobSchedule......


 
最新技术文章:
    ▪Oracle 系统变量函数介绍

     Oracle函数多种多样,系统变量函数就是其中之一,下面就为您介绍三种最常见的系统变量函数,希望对您学习Oracle能有所帮助。 Oracle系统变量函数: (1)SYSDATE 该函数返回当前的日期和时间。返回的是Oracle服务器的当前日期和时间。 select sysdate from dual; insert into purchase values (‘Small Widget','SH',sysdate, 10); insert into purchase values (‘Meduem Wodget','SH',sysdate-15, 15); 查看最近30天的所有销售记录,使用如下命令: select * from purchase where purchase_date between (sysdate-30) and sysdate; (2)USER ......


    ▪oracle trunc()函数的使用方法

     oracle trunc()函数是最常用的函数之一,下面就为您介绍oracle trunc()函数的用法,供您参考,希望可以让您对oracle trunc()函数有更深的认识。 1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值。 其具体的语法格式如下: TRUNC(date[,fmt]) 其中: date一个日期值 fmt        日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去 下面是该函数的使用情况: TRUNC(TO_DATE('24-Nov-1999 08:00 pm','dd-mon-yyyy hh:mi am'))         ='24-Nov-1999 12:00:00 am' TRUNC(TO_DATE('24-Nov-1999 08:37 pm','dd-mon-yyyy hh:mi am'......


    ▪ORACLE学习笔记-新建用户及建表篇

     一、用户相关SQL语句 /*新建用户*/ create user SA identified by 2013; 说明:SA用户名,2013密码 /*授权connect,resource给用户sa*/ grant connect,resource to sa; 说明:CONNECT角色: --是授予最终用户的典型权利,最基本的 。         ESOURCE 角色: --是授予开发人员的 /*查询所有的用户*/ select * from all_users; /*将表STU查询权限授予SA*/ GRANT SELECT ON STU TO SA /*将表STU添加......


 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号