---package(包),相当于java中的类
--包规范(包头)和包主体
--包头
--create or replace package 包名
--is|as
--可以声明变量,常量,游标,函数,存储过程
--end;
--包主体
--create or replace package body 包名
--is|as
--变量,常量,游标,函数,存储过程的定义
--begin
--包主体内部执行部分
--end;
--注意事项:
--1、包头和包主体必须一致,包内的对象名字必须保持一致,
--2、在包头内声明的对象,必须在包主体内定义
--3、包主体的执行部分在当前会话只执行一次
------------------------------------------------
--先创建包头,然后创建包主体
create or replace package apk
is
--声明一个存储过程,输出helloworld
procedure pro_print;
--声明一个函数,求出两个数的h和与差
--function fun_airith(num1 in out number,num2 in out number) return number;
end;
create or replace package body apk
is
--定义一个存储过程,输出helloworld
procedure pro_print
is
begin
dbms_output.put_line('Hello world');
end;
--begin--如果没有执行部分,可以没有begin
end;
declare
begin
apk.pro_print;
end;
drop package apk;
drop package body apk;
------------------------------------------------------------
--实例:创建一个包,定义一个游标,实现游标遍历
create or replace package apk_cursor
is
cursor cur return emp%rowtype;--声明游标
end;
create or replace package body apk_cursor
is
cursor cur return emp%rowtype is select * from emp;--定义游标
begin
for temp in cur loop
dbms_output.put_line('ename=' || temp.ename);
end loop;
end;
declare
begin
for temp in apk_cursor.cur loop
dbms_output.put_line('ename=' || temp.ename);
end loop;
end;
--封装一个包,用游标查询20号部门的员工,薪资,
--用存储过程salesame加薪,每个员工加500,用函数删除mgt为空的员工
--包规范(包头)和包主体
--包头
--create or replace package 包名
--is|as
--可以声明变量,常量,游标,函数,存储过程
--end;
--包主体
--create or replace package body 包名
--is|as
--变量,常量,游标,函数,存储过程的定义
--begin
--包主体内部执行部分
--end;
--注意事项:
--1、包头和包主体必须一致,包内的对象名字必须保持一致,
--2、在包头内声明的对象,必须在包主体内定义
--3、包主体的执行部分在当前会话只执行一次
------------------------------------------------
--先创建包头,然后创建包主体
create or replace package apk
is
--声明一个存储过程,输出helloworld
procedure pro_print;
--声明一个函数,求出两个数的h和与差
--function fun_airith(num1 in out number,num2 in out number) return number;
end;
create or replace package body apk
is
--定义一个存储过程,输出helloworld
procedure pro_print
is
begin
dbms_output.put_line('Hello world');
end;
--begin--如果没有执行部分,可以没有begin
end;
declare
begin
apk.pro_print;
end;
drop package apk;
drop package body apk;
------------------------------------------------------------
--实例:创建一个包,定义一个游标,实现游标遍历
create or replace package apk_cursor
is
cursor cur return emp%rowtype;--声明游标
end;
create or replace package body apk_cursor
is
cursor cur return emp%rowtype is select * from emp;--定义游标
begin
for temp in cur loop
dbms_output.put_line('ename=' || temp.ename);
end loop;
end;
declare
begin
for temp in apk_cursor.cur loop
dbms_output.put_line('ename=' || temp.ename);
end loop;
end;
--封装一个包,用游标查询20号部门的员工,薪资,
--用存储过程salesame加薪,每个员工加500,用函数删除mgt为空的员工