/*包:
包头:定义函数和过程以及参数
包体:函数和过程的实现
语法:create or replace package 包名字 is
end;
create or replace pachage body 包名字 is
begin
end;
例子
CREATE OR REPLACE PACKAGE myp IS
aemp emp%ROWTYPE;
FUNCTION addtest(add1 INTEGER,add2 INTEGER) RETURN INTEGER;
END;
CREATE OR REPLACE PACKAGE BODY myp IS
FUNCTION addtest
(
add1 INTEGER,add2 INTEGER
)
RETURN INTEGER
IS
BEGIN
RETURN add1+add2;
END;
END;
/
----测试
DECLARE
i INTEGER;
BEGIN
i := myp.addtest(2,4);
dbms_output.put_line('2+4的结果为'||i);
END;
/
注意:在包中过程和函数都可以重载,过程和函数的重载都只与参数有关,但是函数的重载跟返回值无关。
例如
函数重载
CREATE OR REPLACE PACKAGE myp IS
aemp emp%ROWTYPE;
FUNCTION addtest(add1 INTEGER,add2 INTEGER) RETURN INTEGER;
FUNCTION addtest(add1 INTEGER,add2 INTEGER,add3 INTEGER) RETURN INTEGER;
END;
函数重载
CREATE OR REPLACE PACKAGE myp IS
PROCEDURE pro1(add1 NUMBER,add2 NUMBER);
PROCEDURE pro1(add1 NUMBER,add2 NUMBER,add3 NUMBER);
END;
/