/*
case语句
语法1
case 表达式
when 条件 then 执行语句;
、、、、
else
如果表达式都不满足when后面的条件,则执行else后面的执行语句,
否则抛出异常
名称:
编号:ORA-06592:
消息:执行 CASE 语句时未找到 CASE
end case;
例子:
DECLARE
v_num NUMBER := 10;
BEGIN
CASE v_num
WHEN 1 THEN dbms_output.put_line('1');
WHEN 2 THEN dbms_output.put_line('2');
ELSE
dbms_output.put_line('不符合以上所有条件');
END CASE;
END;
/
------------------------------------------------
语法2
case
when 逻辑表达式 then 执行语句;
else
执行语句(以上所有逻辑表达式不满足的情况下,执行该执行语句)
end case;
举例说明
DECLARE
v_num NUMBER := 10;
BEGIN
CASE
WHEN 3>6 THEN dbms_output.put_line('3>6成立');
WHEN 3<6 THEN dbms_output.put_line('3<6成立');
ELSE
dbms_output.put_line('不满足以上所有条件');
END CASE;
END;
/
循环语句
1
loop
exit when 条件;(满足条件之后跳出循环)
end loop;
备注:关于退出循环有两种方式
对于简单的条件可以直接使用exit when 条件 跳出循环
对于某些复杂的条件 可以使用判断语句来跳出循环
if 条件
exit;
end if;
2 while 条件 loop
执行语句
end loop;
3 for
3.1 每次递增1
for 变量名 in 1..10 loop;
执行语句
(
从1开始每次递增1,增加到10 退出循环
每执行一次 变量名自动增加1,如果你想设置每次循环增加2 在循环体中书写 k := k+1;这是错误的,
变量名不允许用户手动修改值,只能每次增加1.
)
end loop;
3.2 每次递减1
for 变量名 in reverse 1..10 loop;
执行语句
(
从10开始每次递减1 ,减到k为1的时候跳出循环
)
end loop;
异常
dbms_output.put_line(SQLCODE);--sqlcode得到异常编号
dbms_output.put_line(SQLERRM);--得到异常消息
分类:
预定义异常、非预定义异常、自定义异常
1 预定义异常
oracle自己定义的。不需要我们自己定义,在应用程序中会自动抛出,然后在异常处理部分对异常进行处理
例如:no_data_found 没有找到数据等异常就属于预定义异常
2 非预定义异常
3 自定义异常
自定义过程一般包括:定义异常、抛出异常和处理异常三个步骤
3.1定义异常
语法:异常名 exception --异常名是自己给该异常取的名字,可以随便定义,但是不能定义为系统异常(预定义异常)
3.2 抛出异常
根据自己设定的条件,如果不满足条件,则抛出异常
3.3 处理异常
在异常处理块中,捕获该异常并做出相应处理。
举例说明
DECLARE
myexception EXCEPTION;
BEGIN
IF 3<6 THEN
RAISE myexception;--抛出异常用关键字raise
END IF;
EXCEPTION
WHEN myexception THEN dbms_output.put_line('捕获自定义异常');
END;
/
4 异常编号和异常名绑定
语法:
myexception EXCEPTION;
PRAGMA exception_init(myexception,异常编号);
DECLARE
myexception EXCEPTION;
PRAGMA exception_init(myexception,-20002);
BEGIN
IF 3<6 THEN
RAISE myexception;
END IF;
EXCEPTION
WHEN myexception THEN
dbms_output.put_line(SQLCODE);--此时会打印myexception的错误编号:-20002
END;
/
5 抛出异常消息
DECLARE
myexception EXCEPTION;
PRAGMA EXCEPTION_INIT(myexception,-20002);
BEGIN
IF 2<3 THEN
RAISE_application_error(-20002,'我自定义的异常');
END IF;
END;
/
----------------------------------
备注:如果多个异常的处理办法一样,可以在一个捕获语句中捕获多个异常类型
比如: when exception1 or exception2 then
执行语句
*/
oracle错误一览表:可以借鉴下别人的博客 ,博客地址:http://www.cnblogs.com/phoebus0501/archive/2011/05/23/2054075.html