/* 一.函数? 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;