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

create or replace procedure firstP(name in varchar2) is
/*这里name为的参数,in为输入,varchar2为类型*/
begin/* dbms_output.put_line(); 相当输出到控制台上,这样我们一个简单的存储过程就完成啦记住一句话的结束使用分号结束,存储过程写完一定要执行将它保存到数据库中 (F8)快捷键,或者点击左上角执行*/dbms_output.put_line('我的名字叫'||name);/*dbms_output.put_line相当于JAVA中的System.out.println("我的名字叫"+name);*/
end firstP;

存储过程IF判断

create or replace procedure isifp(age in number) is
/*存储过程if判断以then开始,以end if; 结束*/
beginif (age > 30) thendbms_output.put_line('我已经超过30岁了');elsif(age >21 and age <= 30) thendbms_output.put_line('我是青年');elsif(age >= 10 and age <= 21) thendbms_output.put_line('我还是少年'); elseif (age < 10) thendbms_output.put_line('我还是个儿童');elsedbms_output.put_line('我正在奋斗时期');end if;end if;
end;

返回游标

create or replace procedure sysrefcursor(id in number, columnss out sys_refcursor) as
/*columnss out sys_refcursor  为输出游标*/
beginopen columnss forselect * from emp where empno=id;
end;

用JAVA语言来描述一下。
我们在java程序中写条件查询的时候,返回出来的数据是List<泛型>。这个操作相当于游标,说白了就是个查询而已

获取table中的column

create or replace procedure intop(id in number, print2 out varchar2) ase_name varchar2(64);
beginselect 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;elseprint2:='打印其他';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 USERSpctfree 10initrans 1maxtrans 255storage(initial 64Knext 1Mminextents 1maxextents unlimited);
-- Create/Recreate primary, unique and foreign key constraints
alter table CLASSESadd constraint PK_CLASSES primary key (ID)using index tablespace USERSpctfree 10initrans 2maxtrans 255storage(initial 64Knext 1Mminextents 1maxextents 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
/*在我们创建存储过程的时候as其实是is*/id  number;/*设置变量名称*/c   number;seq number;
beginselect SEQ_CLASSES.nextval into id from dual;/*获取下一个序列,使用into赋值给id这个变量名称*/dbms_output.put_line('classescs=' || classescs);/*打印而已*/select count(*) into c from Classes where classesc = classescs;/*条件判断,classesc=进来的变量*/if (c > 0) then/*当数量大于0时*/select max(seq) + 1 into seq from Classes where classesc = classescs;dbms_output.put_line('第一个seq' || seq);elseif (c = 0) thenseq := 0;/*如果查询出来的数量为0的时候,我们赋值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);/*insert插入这个不用多说了,大家都明白;注意的是我们insert之后一定要提交。不然数据没有持久化到数据库,这个insert没有任何意义了*/
end proclasses;

转载为详细请看这个

Oracle存储过程案例详解相关推荐

  1. 存储过程案例详解,如何制作一张日历表?

    点击关注上方"SQL数据库开发", 设为"置顶或星标",第一时间送达干货 之前给小伙伴们普及了一下存储过程的基础知识,还没看的可以戳这里: SQL存储过程的详细 ...

  2. oracle rac 环境配置文件,学习笔记:Oracle RAC spfile参数文件配置案例详解

    天萃荷净 rac中的spfile探讨,记录一下Oracle RAC搭建完成后关于spfile参数文件的配置案例,与更改RAC环境中参数文件的方法 今天朋友的的rac,因为被同事做数据库升级,分别在两个 ...

  3. Oracle建立全文索引详解

    Oracle建立全文索引详解 1.全文检索和普通检索的区别 不使用Oracle text功能,当然也有很多方法可以在Oracle数据库中搜索文本,比如INSTR函数和LIKE操作: SELECT *F ...

  4. oracle语句中dual什么意思,oracle中dual详解

    oracle中dual详解 基本上oracle引入dual为的就是符合语法 1. 我们先从名称来说,dual不是缩写词,本身就是完整的单词.dual名词意思是对数,做形容词时是指二重的,二元的. 2. ...

  5. oracle11 share pool,Oracle Shared pool 详解

    . Shared Pool概述 在之前的blog对的内存也做了一个概述,参考: Oracle内存架构详解 在网上搜到一篇介绍shared pool非常详细的pdf资料. 原文链接以找不到,但还是要感谢 ...

  6. oracle身份证的正则表达式,Oracle 正则表达式实例详解

    Oracle 正则表达式实例详解 FORM开发中的按行拆分需求:拆分后的行要有规律,并按前后层次排序 需求分析如下: 现有行: 2 , 2.1 , 2.2 , 2.3 3 2.1.1,2.1.2,2. ...

  7. oracle中minus作的应用,Oracle minus用法详解及应用实例

    Oracle minus用法详解及应用实例 Oracle minus用法 "minus"直接翻译为中文是"减"的意思,在Oracle中也是用来做减法操作的,只不 ...

  8. oracle控制文件都一样么,Oracle控制文件详解

    一.Oracle控制文件 为二进制文件,初始化大小由CREATEDATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 ...

  9. python代码案例详解-我用Python抓取了7000 多本电子书案例详解

    安装 安装很简单,只要执行: pip install requests-html 就可以了. 分析页面结构 通过浏览器审查元素可以发现这个电子书网站是用 WordPress 搭建的,首页列表元素很简单 ...

最新文章

  1. qt toutf8函数_qt中的toUtf8, toLatin1, Local8bit, toUcs4(转)
  2. 保益悦听怎么开盲人模式_盲人看电影???是的!盲人看电影!!!
  3. django redirect传递参数_Django中间件
  4. linux桌面版自动更新关闭了,桌面应用|开启 Ubuntu 系统自动升级
  5. scrollLeft. float
  6. Win64下通过JNI(C++)创建jvm
  7. 1909升级卡64_Win10专业版下载_1909 版64位(2019年11月更新)
  8. 海海软件发布动态网站加密(DRM版权保护)Beta版
  9. Python练习题——第六题:编写函数计算弧长的计算公式。弧长计算公式是一个数学公式,为L=n(圆心角度数)× π×2 r(半径)/360(角度制)。其中n是圆心角度数,r是半径,L是圆心角弧长。
  10. iNav飞控AOCODARC-F7MINI固件编译
  11. 最新版(2019.3.23)荣耀paly真机调试(Android stdio)
  12. Java加密技术(四)——非对称加密算法RSA
  13. (自学java的第三天)JPI文档、变量、数据类型
  14. 黑苹果从入门到精通:可能是世界上最详细的VMware安装macOS教程
  15. 解决ConstraintLayout两个组件挤压问题
  16. 在计算机领域中 ascii码,在计算机领域中,ascii码用一个字节来干什么
  17. 高德地图发布2017上半年度公共交通报告
  18. 综合工具-DesignCompiler学习教程
  19. Hi3518ev200:uboot分析
  20. 克鲁斯卡尔算法的基本介绍和实现方法(Java)

热门文章

  1. 10+31=100小组项目总结报告
  2. Windows Server 2003 密钥
  3. 图的连通性,统计图的个数(L2-013 红色警报 (25 分))
  4. Java Streams:流操作及示例
  5. 小飞鱼通达二开 PHP使用钉钉接口发送带链接的卡片消息(代码)
  6. 微导纳米将于12月14日申购:前三季度收入约4亿元,同比增长67%
  7. RESTful 个人理解总结
  8. 华为NTP配置命令,全面
  9. 水舞灯光秀在城市建设中有哪些作用呢
  10. 2022中考化学冲刺模拟测试卷