Home  >  Article  >  Database  >  Oracle数据库中的函数,包和触发器

Oracle数据库中的函数,包和触发器

WBOY
WBOYOriginal
2016-06-07 17:32:22914browse

在pL/Sql developer工具左侧选择ldquo;Functionrdquo;,右键新建就行。在弹出的框中输入函数名和返回值(返回值是必须的),参数

函数:

函数和存储过程非常的相似,唯一的不同就是函数具有返回值。而存储过程是没有返回值的。

函数的定义:

在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;

接下来请看第2页精彩内容

 

相关阅读:

Oracle触发器的使用

Oracle触发器给表自身的字段重新赋值出现ORA-04091异常

Oracle创建触发器调用含参数存储过程

Oracle触发器查询统计本表

MySQL 触发器应用案例

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn