创建和删除存储函数(有返回值)
语法:
create or replace function 函数名(参数名 数据类型)
return 函数的返回值类型
as/is 声明部分
begin
执行的操作
end;
--调用函数
declare
begin
变量名:=函数名(实参);
end;
--根据编号查员工的姓名
create or replace function getname
return varchar2
as emp_name varchar2(20);
begin
select ename into emp_name from emp where empno=7788;
return emp_name
end;
调用函数
declare
empname varchar2(20);
begin
empname:=getname();
dbms_output.put_line(empname);
end;
--有参数的函数(传入多个参数时,用逗号分隔,传入实参时个数,顺序,类型一致)
--按照部门编号返回部门名称
create or replace function getdeptname(deno number) return varchar2
as dename varchar2(20);
begin
select dname into dename from dept where deptno=deno;
return dename;
end;
--调用
begin
dbms_output.put_line(getdeptname(20));
end;
删除函数
drop function 函数名;
包--分类管理
包的组成
包头 包体
创建包头的同时声明存放在此包中的函数,存储过程,游标,变量
创建包头的语法
create [or replace] package 包名
as/is 声明部分;
例
create or replace package emppackage
as
procedure emp_info;
function getempname return varchar2;
end;
--创建包体语法
create or replace package
body 包名 is/as
具体声明的函数或存储过程的内容
create or replace package body emppackage as
procedure emp_info
as empname varchar2(20);
begin
select ename into empname from emp where empno=7788;
dbms_output.put_line(empname);
end emp_info;
function getempname return varchar2
as emp_name varchar2(20);
begin
select ename into emp_name from emp where empno=7788;
return emp_name;
end getempname;
end emppackage;
--调用包中的存储过程
begin
emppackage.emp_info;
end;
--调用函数
begin
dbms_output.put_line(emppackage.getname)
end;
语法:
create or replace function 函数名(参数名 数据类型)
return 函数的返回值类型
as/is 声明部分
begin
执行的操作
end;
--调用函数
declare
begin
变量名:=函数名(实参);
end;
--根据编号查员工的姓名
create or replace function getname
return varchar2
as emp_name varchar2(20);
begin
select ename into emp_name from emp where empno=7788;
return emp_name
end;
调用函数
declare
empname varchar2(20);
begin
empname:=getname();
dbms_output.put_line(empname);
end;
--有参数的函数(传入多个参数时,用逗号分隔,传入实参时个数,顺序,类型一致)
--按照部门编号返回部门名称
create or replace function getdeptname(deno number) return varchar2
as dename varchar2(20);
begin
select dname into dename from dept where deptno=deno;
return dename;
end;
--调用
begin
dbms_output.put_line(getdeptname(20));
end;
删除函数
drop function 函数名;
包--分类管理
包的组成
包头 包体
创建包头的同时声明存放在此包中的函数,存储过程,游标,变量
创建包头的语法
create [or replace] package 包名
as/is 声明部分;
例
create or replace package emppackage
as
procedure emp_info;
function getempname return varchar2;
end;
--创建包体语法
create or replace package
body 包名 is/as
具体声明的函数或存储过程的内容
create or replace package body emppackage as
procedure emp_info
as empname varchar2(20);
begin
select ename into empname from emp where empno=7788;
dbms_output.put_line(empname);
end emp_info;
function getempname return varchar2
as emp_name varchar2(20);
begin
select ename into emp_name from emp where empno=7788;
return emp_name;
end getempname;
end emppackage;
--调用包中的存储过程
begin
emppackage.emp_info;
end;
--调用函数
begin
dbms_output.put_line(emppackage.getname)
end;