oracle 存储过程 基础
- 语句块定义:
- decalre
- -- 变量声明
- var1 number(2); -- 仅声明
- var2 char(2) := '11'; -- 在声明的同时初始化
- begin
- -- 语句
- end; -- 语句块结束
- if 语句
- if a = 1 or b = 2 then
- elsif c = 3 then
- else
- end if;
- case 语句
case语句如果作为分支控制语句,最后结束语句是end case,如果是作为select语句里的控制语句则只需要end。
- declare
- num number(10) := 1;
- begin
- case
- when num = 0 then dbms_output.put_line( 'zero');
- when num = 1 then dbms_output.put_line( 'one');
- else dbms_output.put_line( 'default');
- end case;
- case num
- when 0 then dbms_output.put_line( 'zero');
- when 1 then dbms_output.put_line( 'one');
- else dbms_output.put_line( 'default');
- end case;
- end;
- for 循环
for循环主要有两个用处。
1、 循环一个范围
格式:for i in [start .. end] loop ... end loop;
- for i in 0..9 loop
- dbms_output.put_line('i:' || i);
- end loop;
2、遍历隐式游标
隐式游标的好处是不需要手动关闭,方便
- for currow in (
- select t.col1, t.col2
- from tableName t
- where ...
- ) loop
- if currow.col1 = 0 then
- return; -- 中止sp,返回
- end if;
- end loop;
- while 循环
- isok := 9;
- while isok >= 0 loop
- isok := isok - 1;
- if isok = 8 then
- continue; -- 与编程语言的 continue 语义一样,跳过当前循环的剩余语句,回到循环开始
- end if;
- if isok = 4 then
- exit; -- 与编程语言的 break 语义一样,跳出循环
- end if;
- dbms_output.put_line('isok:' || isok);
- end loop;
- dbms_output.put_line('outside while loop .');
- 存储过程定义
- create or replace procedure sp_name (
- -- 入参、出参列表, 逗号分隔。
- uid in varchar2, -- 不能带长度信息
- startDate in date, -- 第二个输入参数
- defaultVar in varchar2 default "", -- 默认参数,如果不传,要注意参数的顺序
- isok out number, -- 输出参数
- result out varchar2 -- 第二个输出参数
- )
- as
- -- 变量声明,每个声明用分号结束。可以在声明的同时初始化
- var1 varchar2(11);
- var2 number(2) := 123;
- begin
- -- 字符串拼接用 ||
- dbms_output.put_line('isok:' || 'abc');
- -- 调用其他存储过程
- sub_sp_name(param1, prarm2, outParam1, outParam2);
- end; -- 存储过程结束
- 函数定义
- create or replace function func (
- -- 入参、出参列表, 逗号分隔。
- uid in varchar2, -- 不能带长度信息
- startDate in date, -- 第二个输入参数
- defaultVar in varchar2 default "", -- 默认参数,如果不传,要注意参数的顺序
- isok out number, -- 输出参数
- result out varchar2 -- 第二个输出参数
- )
- return number -- 定义返回类型
- as
- -- 变量声明,每个声明用分号结束。可以在声明的同时初始化
- var1 varchar2(11);
- var2 number(2) := 123;
- begin
- -- 字符串拼接用 ||
- dbms_output.put_line('isok:' || 'abc');
- return ret_val;
- end;
- 存储过程与函数异同
1、两者定义类似,都可以带输入输出参数。
2、函数有返回值,存储过程没有。
3、函数的调用要在select语句里;而存储过程不用,可以独立调用。
- 游标
隐式游标
隐式游标的好处是不需要手动关闭,方便
- for currow in (
- select t.col1, t.col2
- from tableName t
- where ...
- ) loop
- if currow.col1 = 0 then
- return; -- 中止sp,返回
- end if;
- end loop;
显式游标
- declare
- isok integer;
- v_event_id number(10);
- v_isagain number(2);
- v_rate number(2);
- v_sender char(11) := '13800138000';
- cursor cursorVar is select event_id, isagain, rate from call_event where sender = v_sender; -- 声明游标
- begin
- open cursorVar; -- 打开游标
- loop
- fetch cursorVar into v_event_id, v_isagain, v_rate; -- 取值
- exit when cursorVar%notfound; --当没有记录时退出循环
- dbms_output.put_line(v_event_id || ', ' || v_isagain || ', ' || v_rate);
- end loop;
- close cursorVar; -- 关闭游标
- --游标的属性有:%FOUND,%NOTFOUNRD,%ISOPEN,%ROWCOUNT;
- --%FOUND:已检索到记录时,返回true
- --%NOTFOUNRD:检索不到记录时,返回true
- --%ISOPEN:游标已打开时返回true
- --%ROWCOUNT:代表检索的记录数,从1开始
- end;
带参数游标
- declare
- isok integer;
- v_event_id number(10);
- v_isagain number(2);
- v_rate number(2);
- v_sender char(11) := '13800138000';
- cursor cursorVar(p_sender varchar2) is select event_id, isagain, rate from call_event where sender = p_sender; -- 声明游标
- begin
- open cursorVar(v_sender); -- 打开游标,在括号里传参。
- loop
- fetch cursorVar into v_event_id, v_isagain, v_rate; -- 取值
- exit when cursorVar%notfound; --当没有记录时退出循环
- dbms_output.put_line(v_event_id || ', ' || v_isagain || ', ' || v_rate);
- end loop;
- close cursorVar; -- 关闭游标
- end;
转载于:https://www.cnblogs.com/copo/p/4720930.html
oracle 存储过程 基础相关推荐
- 存储过程while_超详细的Oracle存储过程基础入门介绍
概述 前面已经对存储过程.函数.包做了个介绍,但是毕竟是写成了一篇,所以没那么细,今天单独介绍一下存储过程基础方面,后面再说遍历什么游标啊,数组啊~ 1.语法 CREATE [OR REPLACE] ...
- Oracle存储过程学习
Oracle存储过程学习 目录 Oracle 存储过程... 1 Oracle存储过程基础知识... 1 Oracle存储过程的基本语法... 2 关于Oracle存储过程的若干问题备忘... 4 1 ...
- oracle存储过程学习经典[语法+实例+调用]
Oracle存储过程基础知识 商业规则和业务逻辑可以通过程序存储在Oracle中,这个程序就是存储过程. 存储过程是SQL, PL/SQL, Java 语句的组合,它使你能将执行商业规则的代码从你的应 ...
- Oracle 存储过程,Hibernate 调用存储过程,JDBC调用存储过程,Oracle 动态SQL
Oracle 存储过程学习 目录 Oracle 存储过程........................................................................ ...
- oracle写转帐的存储过程,Oracle存储过程及块编程基础经典案例
Oracle存储过程及块编程基础案例 pl/sql(procedure language/sql:过程语言)编程是oracle的精髓之所在.跑得慢: 提高应用程序的运行性能,提高效率. 1.作为存储过 ...
- Oracle存储过程基本语法和基础教程
1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER := ...
- 【转】oracle PLSQL基础学习
[转]oracle PLSQL基础学习 --oracle 练习: /**************************************************PL/SQL编程基础****** ...
- SSH:Oracle数据库基础
2019独角兽企业重金招聘Python工程师标准>>> Oracle数据库基础 一:Oracle基础知识 Oracle数据库的主要特点 (1.)支持多用户,大事务量的事务处理 (2. ...
- Oracle存储过程以及游标
一.存储过程 1.存储过程定义 所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过 编译后存储在数据库系统中.在使用时候,用户通过指定已 ...
- 如何编写oracle存储过程
在我的上一个银行项目中,我接到编写ORACLE存储过程的任务,我是程序员,脑袋里只有一些如何使用CALLABLE接口调用存储过程的经验,一时不知如何下手,我查阅了一些资料,通过实践发现编写ORACLE ...
最新文章
- 为什么Java要把字符串设计成不可变的
- ROS Indigo下安装测试Xtion Pro
- python 爬取企业注册信息_python爬取企业名录
- [旧博客]Python 第一次
- C# Winform控件对透明图片重叠时导致图片不透明的解决方法
- springboot,hibernate,exception no session 问题解决
- Microsoft JDBC Driver 4.0 for SQL Server
- nginx利用try_files实现多个源
- MQTT 客户端工具
- CMOS图像传感器基本原理
- 《说医不二》-懒兔子 读书笔记
- 用Python实现简易超市售货系统
- SOLIDWORKS如何简单高效地自动生成模型视图和标注
- 阿里云学生成长计划续费资格考试
- 基于Gin开发的系统代码生成器
- Python学习:批量转换图片格式-PNG转JPG
- 在成长的路上,我们必须与自己坦诚相见
- 【微信小程序】消息推送服务器配置及服务器域名配置(记录坑)
- 删除u盘插拔记录linux,Linux清除U盘(USB)使用记录
- 招标代理服务收费标准(计价格〔2002〕1980号)
热门文章
- 天然气故障代码大全_美的、格力中央空调常见故障代码大全
- python打包不能在其他电脑打开_pyinstaller打包python+opencv 无法在别人电脑上正常运行 问题所在:opencv_ffmpeg341_64.dll...
- 【网络安全】PGP/GPG优质教程汇总
- 安装blocksci mac出错_你的Mac与Big Sur兼容吗?
- 财务报表分析-损益表,资产负债表,现金流,回报率
- cydia无法安装卸载插件_【初识太极】CAD卸载不干净无法重新安装怎么办?
- 计算机组成与人体类比,2020年安徽公务员考试真题模拟:类比推理(7.13)
- 2021-09-1031. 下一个排列 数组
- DSSM,Deep Structured Semantic Models
- 无线OSS-高精度整数加法