博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle学习笔记之用户自定义函数
阅读量:5322 次
发布时间:2019-06-14

本文共 2044 字,大约阅读时间需要 6 分钟。

 

自定义函数语法格式:

 

 

  用户自定义的函数,可以直接在sql语句中直接调用,并且任何一个funciton都必须有返回值,而且该函数声明后,是保存在数据端的,我们随时可以使用;注意:函数只能有一个返回值,如果想返回多个数据,可通过out类型参数将数据传到函数外部;

例如:定义一个函数,该函数根据员工姓名以及部门编号,查找该员工是否在emp中存在,如果存在返回true否则返回false;

createorreplacefunction myFunction(mName invarchar2,mNo innumber)returnbooleanis

  flag boolean:=false;

  total number;

 

begin

    selectcount(*)into total  from emp where emp.ename=mName and emp.deptno=mNo;

    if total>0then

      flag:=true;

    else flag:=false;

    endif;

  return flag;

end myFunction;

测试:

-- Created on 2017/10/19 by ADMINISTRATOR

declare

    f boolean;

 

begin

  f:=myfunction('SMITH',30);

  if f then dbms_output.put_line('true');

  else dbms_output.put_line('false');

  endif;

 

end;

例如:定义一个函数,该函数根据员工姓名以及部门编号,查找该员工是否在emp中存在,如果存在返回true否则返回false;如果存在该员工,那么就将该条数据拿到函数外面;

createorreplacefunction myFunction(mName invarchar2,mNo innumber,msg out emp%rowType)returnbooleanis

  flag boolean:=false;

  total number;

 

begin

    selectcount(*)into total  from emp where emp.ename=mName and emp.deptno=mNo;

    if total>0then

      flag:=true;

      --将该条数据赋值给msg变量

      select emp.*into msg from emp where  emp.ename=mName and emp.deptno=mNo;

    else flag:=false;

    endif;

  return flag;

end myFunction;

测试:

declare

    f boolean;

    msg emp%rowtype;

begin

  f:=myfunction('SMITH',20,msg);

  if f then dbms_output.put_line('true');

  else dbms_output.put_line('false');

  endif;

 

  dbms_output.put_line(msg.empno||':'||msg.ename||':'||msg.hiredate);

end;

例如:定义一个函数,该函数根据员工姓名以及部门编号,查找该员工是否在emp中存在,该函数返回值为该条记录;

createorreplacefunction myFunction(mName invarchar2,mNo innumber,msg out emp%rowType)return emp%rowtypeis

  flag boolean:=false;

  total number;

 

begin

    selectcount(*)into total  from emp where emp.ename=mName and emp.deptno=mNo;

    if total>0then

      flag:=true;

      --将该条数据赋值给msg变量

      select emp.*into msg from emp where  emp.ename=mName and emp.deptno=mNo;

    else flag:=false;

    endif;

  return msg;

end myFunction;

测试:

-- Created on 2017/10/19 by ADMINISTRATOR

declare  

    msg emp%rowtype;

begin

  msg:=myfunction('SMITH',20,msg);

  dbms_output.put_line(msg.empno||':'||msg.ename||':'||msg.hiredate);

end;

 

转载于:https://www.cnblogs.com/lovetianjin/p/7688188.html

你可能感兴趣的文章
三.野指针和free
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
Spring面试题
查看>>
C语言栈的实现
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
使用命令创建数据库和表
查看>>
【转】redo与undo
查看>>
安卓当中的线程和每秒刷一次
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
标识符
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
内存地址对齐
查看>>
创新课程管理系统数据库设计心得
查看>>