oracle中的创建过程,函数,包
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了oracle中的创建过程,函数,包,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3571字,纯文字阅读大概需要6分钟。
内容图文
我们可以使用匿名块调用存储过程: 2 -- 创建存储过程 输入员工编号 返回员工姓名 基本工资 3 create or replace procedure pro_emp_test(v_empno number,v_ename 4 out varchar2,v_sal out number) 5 is 6 --变量声明部分 7 begin 8 --业务逻辑处理部分 9 select ename ,sal into v_ename,v_sal from emp where empno=v_empno; 10 end;--匿名块中调用存储过程 11 declare 12 -- 声明参数用来接收出参 13 v_ename emp.ename%type; 14 v_sal emp.sal%type; 15 begin 16 --调用存储过程 17 pro_emp_test(7369,v_ename,v_sal); 18 -- 调用过程之后 v_ename 和v_sal就有值了 可以打印结果 19 dbms_output.put_line(‘员工姓名:‘||v_ename||‘员工基本工资:‘||v_sal); 20 end;二、创建函数
创建函数和过程非常类似
语法:
create [or replace] function 函数名[(参数名1[in/out/inout] 参数类型...)]
return 返回值的类型
as/is
变量声明部分
begin
业务逻辑处理部分
return 变量/常量
exception
异常处理部分
end;
注意:同形参类型一样,返回值类型不能有精度
例子:创建一个函数,返回0到10之间的一个随机整数
1 调用函数一般使用匿名块: 2 create or replace function fun_random return number 3 is 4 -- 声明随机数变量 5 v_num number(5); 6 begin 7 --获取0到10之间的一个随机数 8 v_num:=trunc(dbms_random.value(0,10)); 9 return v_num; 10 end; 11 --通过匿名块调用函数 12 declare 13 -- 声明变量接收函数的返回值 14 v_num number(5); 15 begin 16 -- 调用函数 17 v_num:=fun_random(); 18 --打印结果 19 dbms_output.put_line(‘随机数:‘||v_num); 20 end;
三、创建包
在开发中,如果业务逻辑比较复杂,需要定义很多过程或者函数。有可能需要定义几十个过程或者函数,这些过程或者函数如果都放到一起,不好管理,一般使用包来管理过程或者函数,一个包中可以定义多个函数或者过程。
一个包包括包和包体,需要同时定义包和包体,这种写法类似于java中的接口和接口的实现。包相当于接口,包体相当于接口的实现类。
创建包的语法:
create [or replace] package 包名 is
-- 声明常量
-- 声明函数或者过程,但是不能有实现
end;
创建包体的语法:
create [or replace ] package body 包名 is
-- 包的实现
end;
例子:定义包,计算圆的面积
定义包:
1 -- 定义包 计算圆的面积 2 create or replace package pac_area is 3 -- 定义pi常量 4 v_pi constant number(5,2):=3.14; 5 --定义计算圆的面积的过程,打印圆的面procedure pro_area(v_r number); 6 --定义一个获取圆的面积的函数 7 function fun_area return number; 8 end;
创建包体:
1 -- 定义包体,用来实现包 2 create or replace package body pac_area is 3 --把面积参数定义成包体的成员变量,这样函数也可以使用这个变量 4 v_area number(5,2); 5 -- 实现过程 6 procedure pro_area(v_r number) is 7 begin 8 v_area:=v_pi*v_r*v_r; 9 dbms_output.put_line(‘圆的面积是:‘||v_area); 10 end; 11 --实现函数,注意,调用该函数前,一定要先调用过程 12 function fun_area return number ibegin 13 return v_area; 14 end; 15 end;调用包中的过程或者函数,在函数或者过程前加上包名就可以了: 16 --使用匿名块调用包中的过程和函数 17 declare 18 v_area number(5,2); 19 begin 20 -- 调用打印圆的面积的过程 21 pac_area.pro_area(2); 22 -- 调用获取圆的面积的函数 23 v_area :=pac_area.fun_area(); 24 dbms_output.put_line(‘函数计算的圆的面积是:‘||v_area); 25 end;
四、管理 过程、函数、包
删除:
drop procedure 过程名;
drop function 函数名;
drop package 包名;
查询oracle中定义的包,函数,过程从user_source 表查找。
select * from user_source where type=‘PACKAGE BODY‘ and name = ‘PAC_AREA‘;
五、面试题
一、过程和函数什么时候用
过程一般用于返回多个参数,函数一般用户返回一个参数。
二、在pl/sql中 包的作用是什么
包的作用 封装,方便管理过程和函数。
oracle中的创建过程,函数,包
标签:定义 成员 cep 使用 turn 创建 不能 返回 random
本文系统来源:https://www.cnblogs.com/yanpingping/p/10846503.html
内容总结
以上是互联网集市为您收集整理的oracle中的创建过程,函数,包全部内容,希望文章能够帮你解决oracle中的创建过程,函数,包所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。