oracle数据库(函数、视图和包)

来源:互联网 发布:java上溯造型 编辑:程序博客网 时间:2024/05/18 18:01
1.函数
定义函数的语法:
create or replace function 函数名
(参数1 in|out|in out 参数类型,
参数2 in|out|in out 参数类型,
......)
RETURN 数据类型
as
begin
SQL语句
return 结果;
end;
实例:计算两数之和
create or replace function sum_func
(num1 in number,num2 in number)
RETURN NUMBER
as
begin
RETURN num1+ num2;
EXCEPTION
when OTHERS
then dbms_output.put_line('计算有误');
END ;

select sum_func(12,13) FROM dual;
2.视图
视图的特点:是一个数据库中虚拟的表;经过查询操作形成的结果;具有普通表的结构;不能实现数据的存储;对视图的修改不会影响实际的数据表
--添加视图
create or replace view emp_dept_view
as select * from emp NATURAL JOIN dept;

--删除视图

drop view emp_dept_view;

3.包
包是有存储在一起的相关对象组成的PL/SQL结构;用于逻辑组合相关的自定义类型、变量、游标、过程和函数
包的组成:
包的规范(又称包头):用于定义常量、变量、游标、过程和函数等用户与程序的接口;可以在包内引用,也可以被外部程序调用
包的主体:是包规范的实现,包括变量、游标、过程和函数等;包体内的内容不能被外部运用程序调用
创建一个包规范:
--包的规范
create or replace package test_package
as
--声明一个存储过程
procedure add_emp_pro(emp_ in empl%rowtype);
--声明一个函数
function sum_func(num1 number,num2 number)
return number;
end test_package;
创建包的主体:
create or replace package body test_package
as
--实现存储过程
procedure add_emp_pro(emp_ in empl%rowtype)
as
begin
dbms_output.put_line('成功添加一条数据');
end;

function sum_func(num1 number,num2 number)
RETURN NUMBER
as
begin
RETURN num1+num2;
end;
end test_package;
包的调用:
set serveroutput on;

declare
emp_ empl%rowtype;
begin
emp_.empno:=9527;
emp_.ename:='老张';
test_package.add_emp_pro(emp_);
end;

begin
dbms_output.put_line('两数之和是'||test_package.sum_func(3,5));
end;