我们来定义一个oracle的函数

create or replace function 方法名(参数名1 参数类型,参数名2 参数类型,参数名3 参数类型)return 返回类型
is
num_C number; --定义变量
begin
--处理函数的过程--
--返回结果
return num_C;
end;

如:我们来创建一个处理加、减、乘、除的计算函数

/*** ****
*** 说明:创建一个加法、减法、乘法、除法的计算函数
** 参数:num_A 数字型参数A,num_B 数字型参数B,numType 计算类型
** 返回:数字类型
****/
create or replace function fun_Test(num_A number,num_B number,numType number)return number
is
num_C number; --定义变量
begin
--计算类型为1 时,表示进行加法运算---
if numType = 1 then
num_C := num_A + num_B;
end if;
--计算类型为2 时,表示进行减法运算---
if numType=2 then
num_C := num_A - num_B;
end if;
--计算类型为3 时,表示进行乘法运算---
if numType=3 then
num_C := num_A * num_B;
end if;
--计算类型为4 时,表示进行除法运算---
if numType=4 then
num_C := num_A/num_B;
end if;
--输出结果
dbms_output.put_line('输出值:'|| num_C);
return num_C;
end;

上面的处理函数用的if end if,也可用if elsif else end if进行处理(注意 不是else if ,是elsif)

     if numType=1 then
num_C := num_A + num_B;
elsif numType=2 then
num_C := num_A - num_B;
elsif numType=3 then
num_C := num_A * num_B;
elsif numType=4 then
num_C := num_A / num_B;
else
--其它处理
end if;

执行创建后,可在数据的函数文件下看到

那么怎么调用我们创建的计算函数呢?

--执行加法运算--
select fun_Test(1,3,1) 结果 from dual;
--执行减法运算--
select fun_Test(8,3,2) 结果 from dual;
--执行乘法运算--
select fun_Test(4,3,3) 结果 from dual;
--执行除法运算--
select fun_Test(6,3,4) 结果 from dual;

也可以一起调用

--执行加法、减法、乘法、除反运算--
select fun_Test(1,3,1) 结果1,fun_Test(8,3,2) 结果2,fun_Test(4,3,3) 结果3,fun_Test(6,3,4) 结果4 from dual;

结果如下

附录一个生成单号函数方法

create or replace function fun_DxcWorkNo(prefix varchar2,singStr varchar2,billType integer)return varchar2
is
billNo varchar(20);
nowDate varchar(20);
begin
--获取单号的当前年月日时分秒 190412090428 ---
select to_char(Sysdate,'yyMMddHHmmss') into nowDate from dual;
--组成单号的字符串 Rw190412090428_1---
billNo:= prefix || nowDate || singStr|| billType;
return billNo;
end;

注意事项:

1) 如果函数的参数是字符串,那边它的数据类型是varchar2,而不是varchar2(20)

2) 函数定义的返回类型是什么类型,就得return 什么类型

3)如果包含if 判断,记得是if-elsif  不是 if-else if

orace如何创建函数并调用的更多相关文章

  1. oracle创建函数和调用存储过程和调用函数的例子(区别)

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

  2. MySql创建函数与过程,触发器, shell脚本与sql的相互调用。

    一:函数 1:创建数据库和表deptartment, mysql> use DBSC; Database changed mysql), ), )); Query OK, rows affect ...

  3. MySQL存储过程和自定义函数、Navicat for mysql、创建存储过程和函数、调用存储过程和函数的区别

    1 MySQL存储过程和函数 过程和函数,它们被编译后保存在数据库中,称为持久性存储模块(Persistent Stored Module,PSM),可以反复调用,运行速度快. 1.1 存储过程 存储 ...

  4. Direct3D Draw函数 异步调用原理解析

    概述 在D3D10中,一个基本的渲染流程可分为以下步骤: 清理帧缓存: 执行若干次的绘制: 通过Device API创建所需Buffer: 通过Map/Unmap填充数据到Buffer中: 将Buff ...

  5. Entity Framework 6 Recipes 2nd Edition(11-4)译 -> 在”模型定义”函数里调用另一个”模型定义”函数

    11-4.在”模型定义”函数里调用另一个”模型定义”函数 问题 想要用一个”模型定义”函数去实现另一个”模型定义”函数 解决方案 假设我们已有一个公司合伙人关系连同它们的结构模型,如Figure 11 ...

  6. Sql Server创建函数

    在使用数据库的过程中,往往我们需要对有的数据先进行计算,然后再查询出来,所以我们就需要创建函数来完成这项任务,在数据库的Programmability(如图1)下面的Function中创建函数(如图2 ...

  7. JS中创建函数的三种方式及区别

    1.函数声明 function sum1(n1,n2){ return n1+n2; }; 2.函数表达式,又叫函数字面量 var sum2=function(n1,n2){ return n1+n2 ...

  8. JS中函数的调用和this的值

    调用每一个函数会暂停当前函数的执行,传递控制权和参数给新函数.除了声明时定义的形式参数,每个函数还接收两个附加的参数:this 和 arguments. 参数this在面向对象编程中非常重要,他的值取 ...

  9. Spring AOP在函数接口调用性能分析及其日志处理方面的应用

    面向切面编程可以实现在不修改原来代码的情况下,增加我们所需的业务处理逻辑,比如:添加日志.本文AOP实例是基于Aspect Around注解实现的,我们需要在调用API函数的时候,统计函数调用的具体信 ...

随机推荐

  1. activemq修改端口

    1.修改TCP 61616端口 cd /apps/svr/activemq/conf cat activemq.xml |grep transportConnector <transportCo ...

  2. SQLSERVER 查询系统中的所有表的数量

    SELECT a.name, b.rows FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE (a.type = ...

  3. 爬坑二 activiti流数据库版本错误引发的问题

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'actModelCont ...

  4. github一些事

    我的个人github地址是:https://github.com/BUGDuYu 我们开发团队小组的github地址是: https://github.com/APPdoctrine 资源推荐: gi ...

  5. centos6.9系列LNMP环境的安装

    一.Nginx 1.先解决Nginx的依赖关系: yum install -y pcre-devel openssl-devel 2.安装wget:sudo yum -y install wget 3 ...

  6. CAS部署在Windows上

    我这里有下载好的cas.war和tomcat7,然后我在将cas.war放在tomcat目录下的webapps下,启动tomcat自动解压war包.浏览器输入http://localhost:8080 ...

  7. 第一次远程ubuntu用c写Hello Word出现的问题

    2019-03-26 21:48:48 之前已经学过c语言,但是一直是在win10上用VC++6.0来写代码的,现在想尝试在linux下用c语言 其实主要目的是来学习linux 1.问题: 在ubun ...

  8. 20175312 2018-2019-2 实验一《Java开发环境的熟悉》实验报告

    20175312 2018-2019-2 实验一<Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试J ...

  9. Asp.net 按钮幕布遮盖效果实现方式

    Asp.net button按钮点击后想要实现幕布效果来等待服务器端执行完成,这种需求虽说看起来很简单,但真实做起来并不是那么简单,涉及了很多细节点,而对于深入理解asp.net button生命周期 ...

  10. js三元表达式

    条件 ? true的时候执行 : false时候执行 const x = 20; let answer; if (x > 10) { answer = 'greater than 10'; } ...