Oracle数据库中的函数,包和触发器
函数:
函数和存储过程非常的相似,唯一的不同就是函数具有返回值。而存储过程是没有返回值的。
函数的定义:
在pL/Sql developer工具左侧选择“Function”,右键新建就行。在弹出的框中输入函数名和返回值(返回值是必须的),参数可以不写。定义如下,创建一个无参的函数:
/**
函数和存储过程非常的相似,唯一的不同的就是函数有返回值。
**/
create or replace function firstFun return varchar2
is
begin
return 'Hello World';
end firstFun;
创建一个有参数的函数:
/**
计算年薪是多少?
**/
create or replace function paramFun(salary number) return number
is
begin
return salary*12;
end paramFun;
在begin中的写法和存储过程一样。
函数的运行和存储过程的一样。
包的介绍:
包的组成:
包头(package):包头部分申明包内数据类型,常量,变量,游标,子程序和异常错误处理,这些元素为包的公有元素。
包主体(package body):包主体则是包定义部分的具体实现,它负责为包头中所声明子程序提供具体的实现,在包主体中还可以声明包的私有元素。
包头和包主体分开编译,并作为两个分开的对象分别存放在数据库字典中。
创建方法:
在开发工具PL/SQL Developer左侧有Packages右键点击新建。输入name值,创建包。会出现两个编辑框。一个是头一个是主体,区别图标不一样。
一个简单的入门案例:
/**
这里是包头,主要是对数据的定义
**/
create or replace package firstPack is
--定义一个变量
v_bonus number:=200;
--定义一个函数
function yearSalary(salary number) return number;
--定义一个存储过程
procedure myrop;
end firstPack;
/**
包主体:对申明的实现
计算年薪
年薪=月薪*12+奖金
**/
create or replace package body firstPack is
--对包头申明函数的实现
function yearSalary(salary number) return number
is
begin
return salary*12+v_bonus;--这里用到了前面申明的变量
end;
--对存储过程的实现
procedure myrop is
begin
--向学生表插入一条数据
insert into tab_stu(stu_id,stu_name,stu_age,class_id) values(9,'凯南',21,2);
commit;
end;
end firstPack;
相关阅读: