一、函数

  函数是作为数据库对象存储在oracle数据库中,函数又被称为PL/SQL子程序。oracle处理使用系统提供的函数之外,用户还可以自己定义函数。函数通常被作为一个表达式来调用或存储过程的一个参数,具有返回值。通常用于返回特定的数据。 函数语法如下:

create or replace function 函数名称 (
  参数名称 测试类型,
  参数名称 测试类型
)
return 数据类型
is
自定义变量名 数据类型
begin
  处理语句;
  return 自定义变量名;
  exception
  异常处理语句;
end;

  函数和存储过程类似,只是函数必须有返回值。

二、实例

1、没有参数的函数

create or replace function test
return varchar2
is
beginreturn 'hello world';
end test;
-- 函数调用
begindbms_output.put_line(test());
end

2、有输入参数的函数

create or replace function get_name(v_id number
)
return varchar2
is --is类似于declarev_name varchar2(50);
beginselect username into v_name from person where id = v_id;return v_name;
end get_name;
-- 函数调用
begin dbms_output.put_line(get_name(1));
end;

3、有带输入和输出的函数

create or replace function get_perons_info(f_id number,f_age out number
)
return varchar2
isv_name varchar2(50); --必须有声明长度
beginselect username, age into v_name, f_age from person where id = f_id;return v_name;
end get_perons_info;
-- 函数调用
declarev_age number;v_name varchar2(255);
beginv_name := get_perons_info(1, v_age );dbms_output.put_line('name:'||v_name||' age:'||v_age);
end;

4、带有输入输出参数的函数

create or replace function get_person_info2(f_id in out number
)
return varchar2
isv_name varchar2(50);
beginselect username, age into v_name, f_id from person where id = f_id;return v_name;
end get_person_info2;
-- 函数调用
declarev_id    number;v_name varchar2(50);
beginv_id := 1;v_name := get_person_info2(v_id);dbms_output.put_line('name:'||v_name||' age:'||v_id );
end;

5、函数返回游标

create or replace function get_person_allreturn sys_refcursor
isp_cursor sys_refcursor;
beginopen p_cursor forselect *  from person;  return p_cursor;exceptionwhen others thenDBMS_OUTPUT.PUT_LINE('获取信息发生错误');
end get_person_all;
--函数调用
declarec_cursor sys_refcursor;r_person person%rowtype;
beginc_cursor := get_person_all();--2、打开游标
--  open c_cursor; --此处不需要显示地打开游标,因为调用存储过程的时候返回的游标已经打开了--3、提取数据loopfetch c_cursor into r_person;exit when c_cursor%notfound; -- 下面没有数据的时候,退出dbms_output.put_line('id:'||r_person.id);dbms_output.put_line('username:'||r_person.username);dbms_output.put_line('age:'||r_person.age); end loop;
end;

三、函数其他命令

  重新编译函数

alter function 函数名称 compile; 

  删除函数

drop function 函数名称;

  查看指定的函数

select * from dba_objects where object_name = '函数名称(字母大写)' and object_type ='FUNCTION';

转载于:https://www.cnblogs.com/ChenNotepad/p/4044768.html

Oracle函数的定义相关推荐

  1. oracle 函数索引

    http://bbs.51cto.com/thread-26271-1.html 如何创建oracle函数索引 Oracle8i的很重要的一个新特性就是增加了function-based index这 ...

  2. row number函数 oracle,oracle函数 ROW_NUMBER()

    [语法]ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) [功能]表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后 ...

  3. java查询出来的日期类型_Java的第29天,Oracle函数

    今天是学习Java的 第29天. 今天学习了数据库中DQL语言中的逻辑条件关系,优先规则,使用order by 排序.学习了Oracle函数,包括单行函数和多行函数,学习了字符函数,字符处理函数,数字 ...

  4. 几个常用的Oracle函数及实例运用

    几个常用的Oracle函数及实例运用     Oracle数据库函数非常多,平时常用的只有那么几种,大象根据实际项目情况,列举几个最常用的函数综合运用的例子.     我这里所说的是针对Oracle数 ...

  5. oracle创建编号函数,oracle函数初次尝试

    初次着手写function,确实费了好长时间,一个if就需要有个end  if ,并且else必须和if一起使用,可以直接对传进来的参数使用oracle自带的函数进行处理,并直接做做判断条件. 需求根 ...

  6. oracle函数-动态结果输出

    1.oracle函数创建 create or replace function fun_test()begin end fun_test; 2.函数调用 select * from table(fun ...

  7. java oracle查询结果list取数,Oracle函数返回Table集合

    Oracle table()函数查询函数返回的结果集 2015年12月13日 22:42:51 warrenjiang 阅读数:7452 版权声明:本文为博主原创文章,未经博主允许不得转载. http ...

  8. oracle函数-LPAD/RPAD

    基本用法: lpad函数 函数介绍 lpad函数是 Oracle 数据库函数,lpad函数从左边对 字符串使用指定的字符进行填充.从其字面意思也可以理解,l是left的简写,pad是填充的意思,所以l ...

  9. oracle函数删除语法,Oracle Delete

    oracle函数 的 Oracle Delete 在本教程中,您将学习如何使用Oracle DELETE语句从表中删除一行或多行. 要从表中删除一行或多行,请按如下所示使用Oracle DELETE语 ...

最新文章

  1. 网站速度优化-前端篇
  2. 公开课报名 | 详解CNN-pFSMN模型以及在语音识别中的应用
  3. Qt Creator 快捷键
  4. SnapGene 4.3.6 win 中文完美不闪退
  5. 【工具】Win 7/8/10 下使用 VC++6.0
  6. JavaScript Iframe富文本编辑器中的光标定位
  7. bat批处理教程 24
  8. ios react_查找内存泄漏React本机应用程序(iOS)
  9. 变压器绕组降低邻近效应_高功率UPS性能提升,规格/重量显著降低
  10. GoLang笔记—容器篇
  11. 衣带渐宽终不悔,为伊消得人憔悴--DbHelper增强版
  12. 微软Windows商店会变得更像Steam ,Xbox可自由安装PC游戏
  13. Scala为什么是大数据第一高薪语言
  14. SSL/TLS安全:Schannel中WinShock漏洞及解决办法
  15. 怎么开发一个完整的对外接口API
  16. 使用Python的psutil包获取机器IPv4信息
  17. 巧妙地数组之类的数据平移
  18. Tailwind教程2 - 基础样式
  19. Easy Save 3
  20. 洛阳理工JAVA期末考试_洛阳理工学院2010/2011学年第一学期基础体育理论期末考试试题答案...

热门文章

  1. C++/STL Bitset (转)
  2. 进程知识点,只需这一篇
  3. golang中的redigo
  4. golang中的接口
  5. BOOL,int,float,指针变量 与“零值”比较
  6. shell实例第11讲:取出系统IP地址,并判断属于哪个网段
  7. assert宏的用法
  8. jsp:请求转发和重定向
  9. springmvc三十:异常处理流程
  10. 剑指offer十:矩形覆盖