博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PL/SQL之--函数
阅读量:5873 次
发布时间:2019-06-19

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

一、函数

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

create or replace function 函数名称 (

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

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

二、实例

1、没有参数的函数

create or replace function test return varchar2is begin       return 'hello world';end test;-- 函数调用 begin   dbms_output.put_line(test());end

2、有输入参数的函数

create or replace function get_name(  v_id number) return varchar2is --is类似于declare  v_name varchar2(50);     begin  select 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 varchar2is    v_name varchar2(50); --必须有声明长度begin    select username, age into v_name, f_age from person where id = f_id;    return v_name;end get_perons_info;-- 函数调用declare    v_age number;    v_name varchar2(255);begin    v_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 varchar2is    v_name varchar2(50);begin    select username, age into v_name, f_id from person where id = f_id;    return v_name;end get_person_info2;-- 函数调用 declare    v_id    number;    v_name varchar2(50);begin    v_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_all  return sys_refcursoris    p_cursor sys_refcursor;begin    open p_cursor for      select *  from person;       return p_cursor;  exception         when others then           DBMS_OUTPUT.PUT_LINE('获取信息发生错误');end get_person_all; --函数调用declare    c_cursor sys_refcursor;    r_person person%rowtype;begin  c_cursor := get_person_all();  --2、打开游标--  open c_cursor; --此处不需要显示地打开游标,因为调用存储过程的时候返回的游标已经打开了  --3、提取数据  loop    fetch 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/always-online/p/4017955.html

你可能感兴趣的文章
Intellij idea 快捷键 生成序列化ID
查看>>
[原创]错误提示:disagrees about version of symbol module_layout,解决方法
查看>>
费马小定理&欧拉定理
查看>>
oracle数组的使用
查看>>
POJ3342 Party at Hali-Bula(树型DP求最大独立集+唯一解判断)
查看>>
matplotlib ----- 多子图, subplots
查看>>
无线路由器连接电信光纤宽带光猫设置方法(转)
查看>>
git的CentOS服务端安装和windows客户端的使用
查看>>
会议06
查看>>
快速提高看盘能力的十大方法
查看>>
线性代数与矩阵论 习题 1.2.1
查看>>
度量空间的一个例子:离散度量空间
查看>>
从有理数到实数(序)
查看>>
自适应滤波:最小二乘法
查看>>
linux下部署jdk+Tomcat
查看>>
ssl介绍以及双向认证和单向认证原理 (转)
查看>>
pyqt,Qt Designer 界面布局子窗口可移动
查看>>
Computer Vision Algorithm Implementations
查看>>
P1144 最短路计数
查看>>
Vue.js - Day4
查看>>