plsql 函数的定义 包规范和包主体。

/*
一.函数?
   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;
原文地址:https://www.cnblogs.com/ZXF6/p/11228639.html