/*
一.函数?
1.函数定义
函数的内容 根据实际需要来定义
2.使用的方式
*/
-- 定义函数 根据部门编号查询出部门的总人数
create or replace function fn(
deno dept.deptno%type
)return number
as
v_count number;
begin
select count(*) into v_count from emp where deptno=deno;
return v_count;
dbms_output.put_line(v_count);
end;
-- 使用方式
declare
v_count number(2);
begin
v_count:=fn(10);
dbms_output.put_line(v_count);
end;
-- 使用方式
select distinct deptno,ename,fn(deptno)人数 from emp;
select deptno,ename from emp;
select distinct deptno from emp;
/*
二、包?
1.创建包规范:变量 常量 过程 函数的声明; java(接口)
2.创建包主体 ,过程
-- 包中定义函数
求三角形到的面积 1.需要一个函数 计算三角形面积 2
2. 需要一个储存过程来 打印函数。
*/
--包 变量,常量, 过程, 函数的声明 :
create or replace package bao1
as
v_area number(5,2);--包中定义的变量是全局变量。
function get_area(n1 number,n2 number) return number;
procedure print_area;
end;
--包的过程。
create or replace package body bao1
as --包过程中定义的变量是局部的。
function get_area(n1 number,n2 number) return number
is
begin
v_area:=n1*n2/2;
return v_area;
end;
procedure print_area
as
begin
dbms_output.put_line('三角形的面积:'||v_area);
end;
end;
-- 调用
declare
v_area number(5,2);
begin
v_area:=bao1.get_area(10,10);
bao1.print_area;
end;