oracle function学习基层:

  函数就是一个有返回值的过程。

   首先 知道oracle 使用限制:

        函数调用限制: 1、 SQL语句中只能调用存储函数(服务器端),而不能调用客户端的函数

             2、SQL只能调用带有输入参数,不能带有输出,输入输出函数

             3、SQL不能使用PL/SQL的特有数据类型(boolean,table,record等)

            4、SQL语句中调用的函数不能包含INSERT,UPDATE和DELETE语句

  创建语法:

    create or replace function 函数名称(    argu1 [mode1] datatype1, --  定义参数变量)

     return datatype --    定义返回的数据类型

  is

       begin

      数据库操作

      Return 返回的数据变量

    end;

我举一例子:

定义一个函数:此函数可以根据雇员的编号查询出雇员的年薪
  CREATE OR REPLACE FUNCTION myfun(eno emp.empno%TYPE)

  RETURN NUMBER
  IS
    rsal NUMBER ;
  BEGIN
      SELECT (sal+nvl(comm,0))*12 INTO rsal FROM emp WHERE empno=eno ;
  RETURN rsal ;
  END ;

我理解的上面意思:

   我分几块解释上面的例子:    首先创建语句不用说了  创建一个function () 名字为 :myfun;

                   (参数类型名 eno  ,参数类型 emp.empno%TYPE)  [ emp.empno%TYPE] :意思是和这个表的这个字段类型相同 这样做 可以防止在操作时出现莫名错误,定这个参数的作用 和java 的作用差不多都是 为在我们实际调用时,把实参 传到function中

               RETURN NUMBER :  /* 定义返回的数据类型 */

                IS:

               rsal NUMBER ;   /*定义一个变量 名字 rsal ,类型为NUMBER ,这个变量作用 看下面即可 */

              BEGIN:  

                SELECT (sal+nvl(comm,0))*12 INTO rsal FROM emp WHERE empno=eno ;

                /*上面的语句 就是我真正函数的主体 ,也是我写函数执行的主要逻辑

                   大概解释下:查询 年薪【 (sal+nvl(comm,0))*12】 根据 员工的编号 ;nvl(comm,0) 这是个常用函                          数意思是 如果comm 为空,则用0 代替  ,

                   INTO rsal : 这个是 将我们查询的结果 放入变量

                */

               RETURN rsal ; 返回 变量

                 END ;

执行上面定义的function:

    SELECT myfun(7369) FROM dual ; /* 不做解释*/

在写几个例子加深理解:

      写一个函数 输入一个员工名字,判断该名字在员工表中是否存在。存在返回 1,不存在返回 0
        create or replace function empfun(en emp.ename%type) return number
          is
          is_exist number;
            begin
              select count(*) into is_exist from emp where ename=upper(en);
          return is_exist;
          end;
/
       1.写一个函数,传入员工编号,返回所在部门名称
        create or replace function myfun(eno emp.empno%type) return varchar
          is
          name varchar(30);
        begin
              select d.dname into name from emp e,dept d where e.deptno = d.deptno and e.empno = eno;
            return name;
        end;
/

     2.写一个函数,传入时间,返回入职时间比这个时间早的所有员工的平均工资
          create or replace function getAvgSal(hdate emp.hiredate%type) return number
           is
           esal number;
            begin
              select avg(sal) into esal from emp where hdate>emp.hiredate;
            return esal;
            end;

oracle function学习1的更多相关文章

  1. Asp.Net MVC4 + Oracle + EasyUI 学习 序章

    Asp.Net MVC4 + Oracle + EasyUI  序章 -- 新建微软实例 本文链接:http://www.cnblogs.com/likeli/p/4233387.html 1.  简 ...

  2. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  3. Oracle GoldenGate学习之Goldengate介绍

    Oracle GoldenGate学习之Goldengate介绍 (2012-10-02 17:07:27) 标签: 检查点 数据传输 队列 进程 分类: Goldengate Goldengate介 ...

  4. oracle 12c 学习系列(1)–12c初体验

    详见原文博客链接地址: oracle 12c 学习系列(1)–12c初体验

  5. Oracle RAC学习笔记01-集群理论

    Oracle RAC学习笔记01-集群理论 1.集群相关理论概述 2.Oracle Clusterware 3.Oracle RAC 原理 写在前面: 最近一直在看张晓明的大话Oracle RAC,真 ...

  6. Oracle RAC学习笔记02-RAC维护工具集

    Oracle RAC学习笔记02-RAC维护工具集 RAC维护工具集 1.节点层 2.网络层 3.集群层 4.应用层 本文实验环境: 10.2.0.5 Clusterware + RAC 11.2.0 ...

  7. Python Built-in Function 学习笔记

    Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ...

  8. [Oracle]OWI学习笔记--001

    [Oracle]OWI学习笔记--001 在 OWI 的概念里面,最为重要的是 等待事件 和 等待时间. 等待事件发生时,需要通过 P1,P2,P3 查看具体的资源. 可以通过 v$session_w ...

  9. 推荐一个Oracle数据库学习网站

    推荐一个我个人的Oracle数据库学习网站,比较系统性的整理,会持续更新的网站.网址: Oracle基础教程: http://www.oraclejsq.com/article/010100110.h ...

随机推荐

  1. go语言基本运算符

    go语言基本运算符 1.算术运算符 以下假设A=10,B=20: 2.关系运算符 以下假设A=10,B=20: 3.逻辑运算符 以下假设A=true,B=false: 4.位运算符 十进制转二进制: ...

  2. 逻辑回归代码demo

    程序所用文件:https://files.cnblogs.com/files/henuliulei/%E5%9B%9E%E5%BD%92%E5%88%86%E7%B1%BB%E6%95%B0%E6%8 ...

  3. QQ交流群

  4. windows IIS 部署dotnetcore

    1.安装windows IIS 程序 ,详细过程略. 2.下载dotnet core SDK runtime 链接地址:https://dotnet.microsoft.com/download/th ...

  5. c语言学习笔记 - 二进制文件

    在进行文件操作的时候,有时候是用文本的形式存在文件里面,例如用 fprintf(fp,"%d",123) 存一个数据123,实际的存储是已1,2,3这3个ASCII码存入,打开文件 ...

  6. 深入浅出 Java Concurrency (37): 并发总结 part 1 死锁与活跃度[转]

    死锁与活跃度 前面谈了很多并发的特性和工具,但是大部分都是和锁有关的.我们使用锁来保证线程安全,但是这也会引起一些问题.   锁顺序死锁(lock-ordering deadlock):多个线程试图通 ...

  7. Docker在线文档收集

    极客学院 kubernetes中文社区 易百教程

  8. CF629E Famil Door and Roads【树上计数+分类讨论】

    Online Judge:Codeforces629E,Luogu-CF629E Label:树上计数,分类讨论,换根 题目描述 给出一棵n个节点的树.有m个询问,每一个询问包含两个数a.b,我们可以 ...

  9. c语言学习笔记 函数数组传递笔记

    今天学习c语言的一个小例子,果然还是陷入了php的编程习惯里,这里记录一下. #include <stdio.h> //例子很简单,就是编写一个函数把传递进来的数组里的值都赋值为1而已 / ...

  10. 101 Hack October'14

    拖了近一个月的总结.(可能源于最近不太想做事:() A题 给出n个长度都为n的字符串,你只可以对每个字符串分别排序,问当每个字符串按升序排序之后,每一列是否也是升序的. #include <cm ...