--函数和包:位于文件夹function中
--函数:和存储过程类似,但是函数有返回值,且其参数只能是in,而不能是out或in out
--举例一.1:创建无参的函数
create or replace function firstFun return varchar2
is
begin
return 'HelloWorld';
end firstFun;
--举例一.2:调用
begin
dbms_output.put_line(firstFun());
end;
--举例二.1:创建有参的函数--根据月薪计算年薪
create or replace function yearSal(v_sal number) return number
is
begin
return v_sal*12;
end firstFun;
--举例二.2:调用
declare
v_sal number;
begin
select sal into v_sal from scott.emp wher empno='7369';
dbms_output.put_line(yearSal(v_sal));
end;
--包:包相当于类,变量相当于成员变量,过程、函数相当于方法。位于文件夹package中
--包组成:包头-定义,包体-实现
--举例一.1:创建包头
create or replace fkpackage is
i constant number:=100;--定义常量
v_comm number:=200;--定义变量-每月奖金200
function yearfun(v_sal number) return number;--定义函数,有返回值
procedure mypro;--定义过程,无返回值
end fkpackage;
--举例一.2:创建包体
create or replace package body fkpackage is
--函数
function yearfun(v_sal number) return number is
begin
return (v_sal,v_comm)*12;
end;
--过程
procedure my pro is
begin
--可以向表中插入数据
end;
end fkpackage;
--举例一.3:调用包
declare
v_sal number;
begin
--其它操作
dbms_out.put_line(fkpackage.yearfun(v_sal));
fkpackage.mypro;
end;
--函数:和存储过程类似,但是函数有返回值,且其参数只能是in,而不能是out或in out
--举例一.1:创建无参的函数
create or replace function firstFun return varchar2
is
begin
return 'HelloWorld';
end firstFun;
--举例一.2:调用
begin
dbms_output.put_line(firstFun());
end;
--举例二.1:创建有参的函数--根据月薪计算年薪
create or replace function yearSal(v_sal number) return number
is
begin
return v_sal*12;
end firstFun;
--举例二.2:调用
declare
v_sal number;
begin
select sal into v_sal from scott.emp wher empno='7369';
dbms_output.put_line(yearSal(v_sal));
end;
--包:包相当于类,变量相当于成员变量,过程、函数相当于方法。位于文件夹package中
--包组成:包头-定义,包体-实现
--举例一.1:创建包头
create or replace fkpackage is
i constant number:=100;--定义常量
v_comm number:=200;--定义变量-每月奖金200
function yearfun(v_sal number) return number;--定义函数,有返回值
procedure mypro;--定义过程,无返回值
end fkpackage;
--举例一.2:创建包体
create or replace package body fkpackage is
--函数
function yearfun(v_sal number) return number is
begin
return (v_sal,v_comm)*12;
end;
--过程
procedure my pro is
begin
--可以向表中插入数据
end;
end fkpackage;
--举例一.3:调用包
declare
v_sal number;
begin
--其它操作
dbms_out.put_line(fkpackage.yearfun(v_sal));
fkpackage.mypro;
end;