b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

oracle存储过程,函数和触发器的详细用法示例

电脑杂谈  发布时间:2020-05-02 16:16:24  来源:网络整理

存储过程与触发器_分布式存储与集中式存储_小米3吧系统存储改成内存存储

本文介绍了Oracle存储过程,函数和触发器的用法. 与您分享以供参考,如下:

首先,存储过程和存储函数

是指存储在中的子程序存储过程与触发器,所有用户程序都可以调用被调用的存储过程和存储函数.

创建存储过程

使用CREATE PROCEDURE命令创建存储过程.

语法:

create [or replace] procedure 过程名(参数列表)
as
PLSQL子程序体;

存储过程与触发器_分布式存储与集中式存储_小米3吧系统存储改成内存存储

--给指定员工涨工资
create procedure addSal(empid in number)
as
  psal emp.sal%type;
begin
  select sal into psal from emp where empno=empid;
  update emp set sal = sal * 1.1 where empno=empid;
  dbms_output.put_line(empid || '涨工资前' || psal || '涨工资后' || (psal * 1.1));
end;

调用存储过程

--方法一
begin
addSal(7369);
end;
--方法二
exec addSal(7369);

存储功能

该函数是一个命名存储过程,可以使用参数并返回计算值. 函数和过程的结构相似,但是必须有一个return子句才能返回函数值. 函数说明指定函数名称,结果值的类型和参数类型.

创建语法:

CREATE [OR REPLACE] FUNCTION 函数名 (参数列表)
RETURN 函数值类型
AS
PLSQL子程序体;

存储过程与触发器_小米3吧系统存储改成内存存储_分布式存储与集中式存储

--查询指定员工的年收入
create function queryEmpSal(empid in number)
return number
as
  psal emp.sal%type;
  pcomm emp.comm%type;
begin
  select sal,comm into psal,pcomm from emp where empno=empid;
  return (psal*12) + nvl(pcomm,0);
end;

函数调用

declare
 psal number;
begin
 psal:=queryEmpSal(7369);
 dbms_output.put_line(psal);
end;

begin
 dbms_output.put_line(queryEmpSal(7369));
end;

程序和功能的输入和输出

通常来说,过程和函数之间的区别在于,该函数可以具有返回值,但是过程没有返回值.

存储过程与触发器_小米3吧系统存储改成内存存储_分布式存储与集中式存储

但是过程和函数都可以指定一个或多个输出参数. 我们可以使用out参数在过程和函数中返回多个值.

何时使用存储过程或函数?

原理: 如果只有一个返回值,则使用存储的函数,否则存储过程与触发器,使用存储的过程.

创建包和包主体

什么是包裹和包裹?

包是一组相关的过程,函数,变量,常量,类型,游标和其他PL / SQL编程元素. 该软件包具有面向对象设计的特征,这就是这些PL / SQL编程元素的封装.

程序包主体是程序包定义部分的特定实现.

分布式存储与集中式存储_存储过程与触发器_小米3吧系统存储改成内存存储

包装包括两部分: 包装定义和包装主体.

--包定义
create [or replace] package 包名 as
[公有数据类型定义]
[公有游标声明]
[公有变量、常量声明]
[公有子程序声明]
end 包名;

--包主体
create [or replace] package body 包名 as
[私有数据类型定义]
[私有变量、常量声明]
[私有子程序声明和定义]
[公有子程序定义]
begin
PL/SQL子程序体;
end 包名;

--创建mypackage包
create or replace package mypackage as
 procedure total(num1 in number, num2 in number, num3 out number);
end mypackage;

--mypackage包体
create or replace package body mypackage as
--计算累加和的total过程
procedure total(num1 in number, num2 in number, num3 out number) as
 tmp number := num1;
begin
 if num2 < num1 then num3 := 0;
 else num3 := tmp;
  loop
   exit when tmp > num2;
   tmp := tmp + 1;
   num3 := num3 + tmp;
  end loop;
 end if;
end total;
end mypackage;

(*注意: 包定义和包主体应分别创建)

通话套餐

declare
 num1 number;
begin
 mypackage.total(1, 5, num1);
 dbms_output.put_line(num1);
end;

更多对Oracle相关内容感兴趣的读者可以查看此站点的特殊主题: “ Oracle通用功能概述”,“ Oracle日期和时间操作技能概述”和“ PHP + Oracle编程技能概述” <

我希望本文对Oracle编程的每个人都有帮助.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-196596-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...