PL/SQL笔记(1)-流程控制,循环,异常,块
流程控制
1.If,then,else,elsif(不是elseif)
if a='1' then
null;
endif;
2.Case
简单case表达式:
搜索型Case表达式:
3.goto语句
begin
if true then
goto label2;
end if;
<<label1>>
SYS.DBMS_OUTPUT.PUT_LINE('label1');
<<label2>>
SYS.DBMS_OUTPUT.PUT_LINE('label2');
end;
循环控制
简单循环: Exit,Exit when condition退出循环

while循环:

for循环:两种,一个是面向数值的for,一种是面向游标的for
面向数值: (..)是范围操作符,1..5表示1到5

begin
FOR j IN 1..5 LOOP
dbms_output.Put_line(j);
END LOOP;
END;
end;
面向游标:

declare
cursor myCursor is select * from ouser;
begin
FOR s IN myCursor LOOP
dbms_output.Put_line(s.userid);
END LOOP;
END;
continue,continue when语句
结束本轮循环;
--只输出偶数
begin
FOR j IN 1..100 LOOP
Continue when Mod(j,2)=1;
dbms_output.Put_line(j);
END LOOP;
end;
异常处理
1.命名异常和匿名异常
命名异常有名字,匿名异常只有异常代码和消息
SQLCODE函数可以获取最后一个异常的异常代码,SQLERRM:异常消息
declare
myexception exception; --声明一个命名异常
v_row Sys_ACC_User%RowType;
Pragma EXCEPTION_INIT (myexception, -20002); --将一个命名异常和一个异常代码绑定
begin
select * into v_row from Sys_ACC_User where rownum=1;
raise myexception; --手动抛出异常
RAISE_APPLICATION_ERROR(-20001,'这是一个匿名异常,我没有名字'); --手动抛出一个匿名异常
Exception
when no_data_Found then --捕获名为no_data_found的异常
dbms_output.Put_line('not data found'||'异常代码:'||SQLCODE||' 异常消息'||SQLERRM);
when myexception then --捕获名为 myexception的异常
dbms_output.Put_line('myexception'||'异常代码:'||SQLCODE||' 异常消息'||SQLERRM);
when others then --其他命名异常和匿名异常在这里捕获
dbms_output.Put_line('异常代码:'||SQLCODE||' 异常消息'||SQLERRM);
end;
Oracle块:
块组成:块头,声明单元,执行单元,异常处理单元
函数,存储过程均为块结构,命名块

create or replace function WordCount(str in varchar2)return number --块头
is
numCount number default:=0;--声明单元
begin --执行单元
return Length(LTrim(str,'0'));
Exception --异常处理单元
when others then:
SYS.DBMS_OUTPUT.PUT_LINE('error');
end ;
匿名块
匿名块没有块头

declare --声明单元
v_n1 varchar2(100);
begin
--执行单元
v_n1:='20';
SYS.DBMS_OUTPUT.PUT_LINE(v_n1);
exception --异常处理单元
when others then
SYS.DBMS_OUTPUT.PUT_LINE('error');
end;
其他:
1.转义: q’<s’d>’,表示为: s’d ,<和>必须成对出现,可用(),{},[]等代替
2.Function必须返回值,不想返回值的用Procedure
3.如果Procedure有参数(In/Out),调用方式: ProcedureName(param1,param2);如果procedure没有参数,则直接: ProcedureName或者ProcedureName(),Function类似…
4.空字符 ’’is Null =>true
zhxjdwh:http://www.cnblogs.com/zhxj/
PL/SQL笔记(1)-流程控制,循环,异常,块的更多相关文章
- PL/SQL程序设计、流程控制
PL/SQL是 Procedure Language & Structured Query Language 的缩写 PL/SQL是对SQL语言存储过程语言的扩展 PL/SQL程序由三个块组成 ...
- 二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)
一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希 ...
- python学习第七天流程控制循环while和循环for区别
流程控制循环是任何编程语言都有一种循环结构,在python while 和break continue 搭配使用,还一种while ....else ......,for循环有序列表和字符串 whil ...
- pl/sql 笔记之基础(上)
由于公司中使用 oracle,而本人对存储过程一直也懵懵懂懂,故一周时间学习了一遍 pl/sql,在此记下笔记!!! 一.前提,pl/sql 是啥? 1.PL/SQL是一种高级数据库程序设计语言,该语 ...
- PL/SQL控制语句(二、循环控制语句)
循环允许重复执行代码直到循环条件匹配,PL/SQL中循环主要有LOOP语句和EXIT语句两种,这两种语句相辅相成,一起组成了PL/SQL的循环结构.在PL/SQL中,循环分为四大类,本文将会讲解其中的 ...
- PL SQL笔记(三)
loop then .. exit; end if; end loop; select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual; sel ...
- 《Node.js In Action》笔记之流程控制
转向Javascript后,开始学习了node.js,选择的第一本书是<Node.js in Action> 将近一个月时间,断断续续看完,选几个点做下笔记 1.实现串行化流程控制 var ...
- pl/sql 笔记之存储过程、函数、包、触发器(下)
一.存储过程.存储函数 1.What's This? ①.ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. ②.存储过程.存储函数的唯 ...
- 【原】Java学习笔记005 - 流程控制
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 程序的流程控制(流 ...
随机推荐
- 20170223 遇到自建表里面相同key值数据不唯一
我怎么发现这个表里 key值相同数据不唯一, 这两条看起来是完全相同的, 其实排序不能能合并已经说明问题.
- 恢复MySQL数据库删除的数据
在日常运维工作中,对于数据库的备份是至关重要的!数据库对于网站的重要性使得我们对 MySQL 数据库的管理不容有失!然而是人总难免会犯错误,说不定哪天大脑短路了,误操作把数据库给删除了,怎么办? 下面 ...
- HDU 5666 Segment
Segment Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- react native 之 redux
第一章 认识redux 说的通俗且直白一点呢,就是redux提供了一个store,独立的一个内存区,然后放了一些state,你可以在任何component中访问到state,这些state要更改怎么 ...
- ap和路由器有什么区别 ap和路由器的区别介绍【图文】
现在能够摆脱网线限制能够自由方便上网的WiFi和无线网络也来越流行,很多酒店.饭店.宾馆.办公楼等地方都会提供无线网络.而能够提供无线网络的设备有很多,现在我们介绍的是无线ap和无线路由器.那么,ap ...
- Scanner、String(java基础知识十二)
1.Scanner的概述和方法介绍 * A:Scanner的概述 * 是一个从键盘输入的类,有final修饰,不能被子类继承 * Scanner sc = new Scanner(System.in) ...
- html5--6-60 阶段练习7-下拉菜单
html5--6-60 阶段练习7-下拉菜单 学习要点 综合运用所学过的知识完成一个下拉菜单的小练习,加深对学过知识点的综合应用能力. <!DOCTYPE html> <html l ...
- docker 初试---常用命令
http://blog.csdn.net/wsscy2004/article/details/25878363 常用命令 查看容器的root用户密码 docker logs <容器名orID&g ...
- codeforces 667B B. Coat of Anticubism(水题)
题目链接: B. Coat of Anticubism time limit per test 1 second memory limit per test 256 megabytes input s ...
- 并不对劲的bzoj5415:loj2718:uoj393:p4768:[NOI2018]归程
题目大意 \(n\)(\(n\leq2*10^5\))个点,\(m\)(\(m\leq4*10^5\))条边的图,每条边有海拔\(a_i(a_i\leq10^9)\).长度\(l_i(l_i\leq1 ...




