我们来定义一个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. centos 时钟配置

    centos 7 时钟配置: timedatectl 命令: [root@localhost ~]# timedatectl --help timedatectl [OPTIONS...] COMMA ...

  2. 翻译 | Placing Search in Context The Concept Revisited

    翻译 | Placing Search in Context The Concept Revisited 原文 摘要 [1] Keyword-based search engines are in w ...

  3. opencv学习之路(37)、运动物体检测(二)

    一.运动物体轮廓椭圆拟合及中心 #include "opencv2/opencv.hpp" #include<iostream> using namespace std ...

  4. uni-app编写小程序

    今天项目还没有开始开发,网上看到了uni-app官网介绍可以一套代码,多端使用,感觉很厉害的样子,就做了个小程序页面试试. uni-app 使用 vue语法,小程序api,内嵌mpvue,使我们能够很 ...

  5. return -1 、return 1 、 return 0 的区别

    根据所定义函数的需求返回不同的值. 一般0和-1或者0和1使用 0和-1使用时: 0一般表示成功执行 -1一般表示不成功 0和1使用时: 1真 0假

  6. 论文阅读:Siam-RPN

    摘要 Siam-RPN提出了一种基于RPN的孪生网络结构.由孪生子网络和RPN网络组成,它抛弃了传统的多尺度测试和在线跟踪,从而使得跟踪速度非常快.在VOT实时跟踪挑战上达到了最好的效果,速度最高16 ...

  7. python笔记---@classmethod @staticmethod

    python定义类方法的三种方式: 1.常规方式--需要通过self参数隐式的传递当前类对象的实例 2.@classmethod修饰方式--@classmethod修饰的方法class_foo()需要 ...

  8. Java将string内容写入到TXT文件

    private static String filePath = "E:\\test.txt"; private static void saveAsFileWriter(Stri ...

  9. CSS实现水平垂直居中的1010种方式

    转载自:CSS实现水平垂直居中的1010种方式 划重点,这是一道面试必考题,很多面试官都喜欢问这个问题,我就被问过好几次了 要实现上图的效果看似很简单,实则暗藏玄机,本文总结了一下CSS实现水平垂直居 ...

  10. 使用JSR-303进行校验

    package com.ieou.comac.module.web.dto.employee; import lombok.Data; import javax.validation.constrai ...