我们来定义一个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. redis 在 php 中的应用(string篇)

    本文为我阅读了 redis参考手册 之后结合 博友的博客 编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: string(字符串) SET SETN ...

  2. 【ubuntu】-桌面假死的解决办法

    第一,通过ctrl+art+F1(1-6),启动本地终端 切换到了字符界面tty1 第二,查询进程,ps -e |grep tty7 得到tty7的pid号 第三,杀死tty7的进程 , kill 9 ...

  3. js实现简易版validate

    需求分析 项目中需要根据选择不同的类型,显示不同的表单,采用的方法是css隐藏显示不需要的表单,但是这个表单字段都是必填的,尝试把不同的表单放在不同的form里,提交时根据不同的类型调用miniui自 ...

  4. 单例模式-懒汉式的一次多线程Debug

    单例模式要要点就是一个类只会存在一个实例,要想达到这种效果,最重要的就是将构造方法设置为私有,然后通过static的方法来获取对象. 上述设计并不线程安全,因为在lazySingleton = new ...

  5. archer docker安装部署

    1.准备配置文件从archer项目官网下载/archer/settings.py文件,根据自己情况放到相应的目录我下载后放到如下目录[root@lenovo opt]# mkdir -p /opt/a ...

  6. stm32库函数建工程和使用Keil自带库建工程有没有区别?发现了同样的程序在两种情况下keil自带库可以运行的情况,不知是什么原因

    我使用库函数建的工程(非Keil自带库),为了实现SPI对Si24r1芯片数据的读写,以验证stm32是否可以和si24r1能够正常通信,发现使用库函数建的工程程序不能通过,读出来的数据和写的数据不一 ...

  7. SpringBoot后台接收前台的字符串数据

    需求 将前台传入的字符串数据转为int类型. 操作 在pom.xml中添加引用. <dependency> <groupId>org.apache.commons</gr ...

  8. 远程和Ubuntu服务器进行Socket通信,使用python和C#(准备篇)

    服务器在阿里云上,和一般的本地配置方案不太一样,所以网上的博客里没有解决办法,本人在这里记录一下,方便大家交流. 由于数据要保存到MySQL数据库中,使用python对数据进行操作,爬到数据直接进行保 ...

  9. java 反射得到属性与属性值

    反射可以破坏所有的封装性,比如这次通过反射得到的属性与属性值: /** * 得到属性值 * @param obj */ public static void readAttributeValue(Ob ...

  10. How Many Zeroes? LightOJ - 1140

    #include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #incl ...