流程控制

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)-流程控制,循环,异常,块的更多相关文章

  1. PL/SQL程序设计、流程控制

    PL/SQL是 Procedure Language & Structured Query Language 的缩写 PL/SQL是对SQL语言存储过程语言的扩展 PL/SQL程序由三个块组成 ...

  2. 二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)

    一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希 ...

  3. python学习第七天流程控制循环while和循环for区别

    流程控制循环是任何编程语言都有一种循环结构,在python while 和break continue 搭配使用,还一种while ....else ......,for循环有序列表和字符串 whil ...

  4. pl/sql 笔记之基础(上)

    由于公司中使用 oracle,而本人对存储过程一直也懵懵懂懂,故一周时间学习了一遍 pl/sql,在此记下笔记!!! 一.前提,pl/sql 是啥? 1.PL/SQL是一种高级数据库程序设计语言,该语 ...

  5. PL/SQL控制语句(二、循环控制语句)

    循环允许重复执行代码直到循环条件匹配,PL/SQL中循环主要有LOOP语句和EXIT语句两种,这两种语句相辅相成,一起组成了PL/SQL的循环结构.在PL/SQL中,循环分为四大类,本文将会讲解其中的 ...

  6. PL SQL笔记(三)

    loop then .. exit; end if; end loop; select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual; sel ...

  7. 《Node.js In Action》笔记之流程控制

    转向Javascript后,开始学习了node.js,选择的第一本书是<Node.js in Action> 将近一个月时间,断断续续看完,选几个点做下笔记 1.实现串行化流程控制 var ...

  8. pl/sql 笔记之存储过程、函数、包、触发器(下)

    一.存储过程.存储函数   1.What's This? ①.ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. ②.存储过程.存储函数的唯 ...

  9. 【原】Java学习笔记005 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 程序的流程控制(流 ...

随机推荐

  1. node-sass 安装失败win32-x64-48_binding.node

    升级了nodejs的版本,原项目的node-sass模块启动安装不了. 下载对应的win32-x64-xx_binding.node https://github.com/sass/node-sass ...

  2. redis08----集群

    集群的作用: .主从备份,防止主机宕机 .读写分离,主服务器写,从服务器内容跟着主服务器,主服务器变他就变,读就从从服务器读.减轻主服务器的负担. .任务分离,比如消耗cpu和内存的操作,交给从服务器 ...

  3. linux 设备驱动程序中的一些关联性思考

    首先,个人感觉设备驱动程序与应用程序中的文件操作隔得有点远,用户空间不论是直接使用系统调用还是库函数都是通过系统调用的接口进入内核空间代码的.但是看过一个博客的分析整个过程,感觉中间层太过麻烦,必须经 ...

  4. 汉字与区位码互转(天天使用Delphi的String存储的是内码,Windows记事本存储的文件也是内码),几个常见汉字的各种编码,utf8与unicode的编码在线查询,附有读书笔记 good

    汉=BABA(内码)=-A0A0=2626(区位码)字=D7D6(内码)=-A0A0=5554(区位码) 各种编码查询表:http://bm.kdd.cc/ 汉(记住它,以后碰到内存里的数值,就会有敏 ...

  5. 基于Python 的简单推荐系统

    def loadExData(): return[[1,1,1,0,0], [2,2,2,0,0], [1,1,1,0,0], [5,5,5,0,0], [1,1,0,2,2], [0,0,0,3,3 ...

  6. Java 字符串比较小知识

    使用 String.compareTo 方法: compareTo() 的返回值是int, 它是先比较对应字符的大小(ASCII码顺序). 1.如果字符串相等,返回值0. 2.如果第一个字符和参数的第 ...

  7. 通过Oracle sql developer从sqlserver迁移数据到oracle

    通过Oracle sql developer工具从sqlserver迁移数据到oracle 序言 一般情况下,sqlserver数据迁移到oracle,我们可以使用ODI来进行.但ODI的安装.配置. ...

  8. HDU - 1874 畅通工程续(最短路径)

    d.已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. s.最短路径 c.Dijkstra单源最短路 /* Dijkstra单源最短路 权值必须是非负 单源最短路径,Dijkstra算法 ...

  9. bleve搜索引擎源码分析之索引——mapping和lucene一样,也有_all

    例子: package main import ( "fmt" "github.com/blevesearch/bleve" ) func main() { / ...

  10. saltstack自动化运维快速入门

    saltstack自动化运维快速入门 关于saltstack 这个软件是干啥的 我这里就不介绍了 只是简单的说下是干啥的 网上的说法是 它是func的强化版本+ puppet的精简版 关于puppet ...