iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Oracle存储过程案例详解
  • 525
分享到

Oracle存储过程案例详解

2024-04-02 19:04:59 525人浏览 八月长安
摘要

创建简单存储过程(Hello World) 为了方便读者简单易懂,我将下面使用到的表复制给大家。 具体表中的数据,请大家自己填写 -- Create table create t

创建简单存储过程(Hello World)

为了方便读者简单易懂,我将下面使用到的表复制给大家。
具体表中的数据,请大家自己填写


-- Create table
create table EMP
(
  empno    NUMBER(4) not null,
  ename    VARCHAR2(10),
  job      VARCHAR2(9),
  mgr      NUMBER(4),
  hiredate DATE,
  sal      NUMBER(7,2),
  comm     NUMBER(7,2),
  deptno   NUMBER(2)
)

在这里插入图片描述

在这里插入图片描述


create or replace procedure firstP(name in varchar2) is

begin
 
  dbms_output.put_line('我的名字叫'||name);
end firstP;

下面我们要对刚刚写过的存储过程进行测试,我们开启Test Window这个窗口

在这里插入图片描述


-- Created on 2018/12/30 星期日 by ADMINISTRATOR 
declare 
  -- Local variables here
  
  name2 varchar2(64):='数据库';
begin
  -- Test statements here
  firstp(name2);
end;

我们打开DBMS Output就可以看到执行的存储过程啦。

在这里插入图片描述

在这里插入图片描述

存储过程IF判断


create or replace procedure isifp(age in number) is

begin
  if (age > 30) then
    dbms_output.put_line('我已经超过30岁了');
  else
    if (age < 10) then
      dbms_output.put_line('我还是个儿童');
    else
      dbms_output.put_line('我正在奋斗时期');
    end if;
  end if;

end;

存储过程输出


create or replace procedure inandout(name in varchar2, age in number,outp out varchar2) is

begin
  outp:='my name is '|| name ||',my age is '||age;
end inandout;

测试输出代码


-- Created on 2018/12/30 星期日 by ADMINISTRATOR 
declare 
  -- Local variables here
  name varchar2(64):='数据库';
  age number:=06;
  out_p varchar2(64);
begin
  -- Test statements here
  inandout(name,age,outp=>:out_p);
  
end;

在这里插入图片描述

返回游标


create or replace procedure sysrefcursor(id in number, columnss out sys_refcursor) as

begin
  open columnss for
  select * from emp where empno=id;
end;

测试游标

第一种测试方法


-- Created on 2018/12/30 星期日 by ADMINISTRATOR 
declare 
  -- Local variables here
 cursor ee is select * from emp where empno=7934;
begin
  -- Test statements here
  for e in ee loop
  dbms_output.put_line('deptno:'||e.deptno);
  end loop;
end;

输出结果如下:

在这里插入图片描述

第二种测试方法


-- Created on 2018/12/30 星期日 by ADMINISTRATOR 
declare 
  -- Local variables here
 cursor ee is select * from emp where empno=7934;
 cur ee % rowtype;
begin
  -- Test statements here
  open ee;
  loop
  fetch ee into cur;
  exit when ee%notfound;
  dbms_output.put_line('name:'||cur.ename);
  end loop;
  close ee;
end;

在这里插入图片描述

上面测试结果仅仅返回一条数据。下面我来演示返回多条数据的情况。
首先请看我表中的数据

在这里插入图片描述

有两个job中内容为CLERK的数据。


-- Created on 2018/12/30 星期日 by ADMINISTRATOR 
declare 
  -- Local variables here
 cursor ee is select * from emp where job='CLERK';
begin
  -- Test statements here
  for e in ee loop
  dbms_output.put_line('deptno:'||e.deptno);
  end loop;
end;

在这里插入图片描述

游标返回多条数据。

由于对于初学者来说,游标可能不是很容易理解,下面我用JAVA语言来描述一下。
我们在java程序中写条件查询的时候,返回出来的数据是List<泛型>。这个操作相当于游标,说白了就是个查询而已(大家不要误认为就这么一句简单的sql为什么要用游标,因为只是方便读者学习游标罢了,具体业务具体分析,请不要抬杠哦)
当我们要使用list中的数据时,我们使用循环调用某一条数据时,是不是就要用实体类对象点get字段。可以理解为for e in ee loop dbms_output.put_line('deptno:'||e.deptno); end loop;
这里面的e.deptno。

获取table中的column


create or replace procedure intop(id in number, print2 out varchar2) as
  e_name varchar2(64);
begin
  select ename into e_name from emp where empno = id;
  if e_name ='ALLEN' then 
   dbms_output.put_line(e_name);
   print2:='my name is '||e_name;
   else if e_name ='SMITH' then 
      print2:='打印sql'||e_name;
      else
        print2:='打印其他';
      end if;
   end if;
end intop;

稍微复杂一点存储过程

由于朋友这里有个需求需要用存储过程,进而更新一下博客。
首先我们先创建一张表


-- Create table
create table CLASSES
(
  id       NUMBER not null,
  name     VARCHAR2(14),
  classesc VARCHAR2(10),
  seq      NUMBER(5)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table CLASSES
  add constraint PK_CLASSES primary key (ID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );

下面我们创建一个序列


-- Create sequence 
create sequence SEQ_CLASSES
minvalue 1
maxvalue 9999999999999999999999999999
start with 2
increment by 1
cache 20;

下面创建存储过程,写的乱一些,希望不要介意


create or replace procedure proclasses(Names     in varchar2,
                                       classescs in varchar) as

  id  number;
  c   number;
  seq number;
begin
  select SEQ_CLASSES.nextval into id from dual;
  dbms_output.put_line('classescs=' || classescs);
  select count(*) into c from Classes where classesc = classescs;
  if (c > 0) then
    select max(seq) + 1 into seq from Classes where classesc = classescs;
    dbms_output.put_line('第一个seq' || seq);
  else
    if (c = 0) then
      seq := 0;
      dbms_output.put_line('c=0的时候seq' || seq);
    end if;
  end if;
  insert into classes
    (id, name, classesc, seq)
  values
    (id, names, classescs, seq);
 
end proclasses;

下面我们来调用这个存储过程


-- Created on 2019/1/7 星期一 by ADMINISTRATOR 
declare 
  -- Local variables here
  names varchar2(32):='晓明';
  classescs varchar2(32):='一班';
begin
  -- Test statements here
  proclasses(names,classescs);
end;

到此这篇关于oracle存储过程案例详解的文章就介绍到这了,更多相关Oracle存储过程内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Oracle存储过程案例详解

本文链接: https://www.lsjlt.com/news/132536.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle存储过程案例详解
    创建简单存储过程(Hello World) 为了方便读者简单易懂,我将下面使用到的表复制给大家。 具体表中的数据,请大家自己填写 -- Create table create t...
    99+
    2024-04-02
  • MySQL存储过程详解 mysql 存储过程
    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Proce...
    99+
    2024-04-02
  • oracle Dbeaver存储过程语法详解
    可视化工具 Dbeaver 基本语法 增 CREATE OR REPLACE PROCEDURE addStudent IS BEGIN INSERT INTO...
    99+
    2024-04-02
  • mysql 存储过程详解
    前言 在项目开发中,经常会遇到这样一种场景,当修改A表的一条数据时,需要关联修改B表、C表甚至其他更多表的数据,为什么会这样呢? 在真实的业务场景中,往往一张表的数据关联的业务是多样的,举例来说,用户在页面上完成一个订单,对服务端来说,与这...
    99+
    2023-08-17
    mysql 存储过程详解 mysql 存储过程使用 mysql 存储过程
  • SqlServer存储过程详解
    从存储过程返回数据 - SQL Server | Microsoft 官方文档 存储过程它是真正的脚本,更准确地说,它是批处理(batch),但都不是很确切,它存储与数据库而不是单...
    99+
    2024-04-02
  • mysql存储过程的案例分析
    这篇文章主要介绍mysql存储过程的案例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、什么是存储过程为以后的使用而保存的一条或多条MySQL语句的集合。存储过程思想上就是数据...
    99+
    2024-04-02
  • oracle中存储函数与存储过程的示例
    这篇文章主要介绍了oracle中存储函数与存储过程的示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一:存储过程:简单来说就是有名字的pl...
    99+
    2024-04-02
  • oracle 存储过程、函数和触发器用法实例详解
    本文实例讲述了oracle 存储过程、函数和触发器用法。分享给大家供大家参考,具体如下: 一、存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。 创建存储过程 用CREAT...
    99+
    2024-04-02
  • Oracle存储过程怎么理解
    今天小编给大家分享一下Oracle存储过程怎么理解的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、存储过程通俗理解简单理解...
    99+
    2023-07-05
  • Oracle存储过程新手入门教程(通俗理解存储过程)
    目录一、存储过程通俗理解二、创建存储过程基本语法(汇总)三、执行存储过程的方式(5种)四、网上现有的创建存储过程的两种方式解释(看注释)五、一些存储过程示例(仅供参考)六、其他语法七...
    99+
    2023-03-03
    oracle如何创建存储过程 oracle数据库存储过程调用 oracle的存储过程写法
  • MySQL存储过程实例讲解
    MySQL存储过程是一组预编译的SQL语句,存储在数据库中,并可以在需要时调用执行。下面是一个MySQL存储过程的实例讲解:假设我们有一个学生表student,包含以下字段:id、name、age、grade。我们想要创建一个存储过程,...
    99+
    2023-08-11
    MySQL
  • oracle中print_table存储过程实例介绍
    定义 所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过 编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应...
    99+
    2024-04-02
  • SQL Server的存储过程详解
    目录存储过程的概念存储过程的优点系统存储过程用户自定义存储过程1、 创建语法2、 创建不带参数存储过程3、 修改存储过程4、 带参存储过程5、 带通配符参数存储过程6、 带输出参数存...
    99+
    2024-04-02
  • MYSQL存储过程 注释详解
    目录1.使用说明2.准备3.语法3.1 变量及赋值3.2 入参出参3.3 流程控制-判断3.4 流程控制-循环3.5 流程控制-退出、继续循环3.6 游标3.7 存储过程中的hand...
    99+
    2024-04-02
  • mysql存储过程之错误处理实例详解
    本文实例讲述了mysql存储过程之错误处理。分享给大家供大家参考,具体如下: 当存储过程中发生错误时,重要的是适当处理它,例如:继续或退出当前代码块的执行,并发出有意义的错误消息。其中mysql提供了一种简...
    99+
    2024-04-02
  • MySQL存储过程与函数的案例分析
    这篇文章将为大家详细讲解有关MySQL存储过程与函数的案例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。        &nb...
    99+
    2024-04-02
  • Oracle存储过程示例:检测表是否存在
    Oracle存储过程示例:检测表是否存在 在Oracle数据库中,有时候我们需要编写存储过程来检测特定的表是否存在,以便在程序逻辑中做出相应的处理。本文将介绍如何编写一个Oracle存...
    99+
    2024-03-08
    检测 oracle 存储过程
  • MySQL存储过程in、out、inout参数的案例
    小编给大家分享一下MySQL存储过程in、out、inout参数的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!文章目录存储...
    99+
    2024-04-02
  • SQL SERVER存储过程用法详解
    目录一、存储过程的概念存储过程的优点二、存储过程的分类1、系统存储过程2、临时存储过程3、用户自定义存储过程二、存储过程的用法1、不带参数的存储过程,获取MyStudentInfo表...
    99+
    2024-04-02
  • MySQL存储过程及语法详解
    目录1. 存储过程基本用法1.1 概念1.2 创建存储过程1.2.1 语法格式2.2.2 语法介绍1.3 调用存储过程1.4 查看存储过程1.5 删除存储过程2. 存储过程中的语法结...
    99+
    2022-11-13
    MySQL存储过程语法 MySQL存储过程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作