设为首页 加入收藏

TOP

PL/SQL编程基础简介及实践(四)
2018-03-18 16:21:36 】 浏览:199
Tags:PL/SQL 编程 基础 简介 实践
v_result := vv.role_id || '_表示的是_角色3';
 dbms_output.put_line(v_result);
elsif (vv.role_id = 'project_bj') then
 v_result := vv.role_id || '_表示的是_角色4';
 dbms_output.put_line(v_result);
else
 v_result := vv.role_id || '_表示的是_未知角色';
dbms_output.put_line(v_result);
 end if;
end loop;
 dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss') || '处理成功');
end;


loop语句示例
loop
执行的语句
exit when <条件语句>; --当条件为满足时,退出循环
end loop;
--loop示例
declare
 v_count number;
 v_time number;
begin
 v_count := 0;
 loop
 v_count := v_count + 1;
 dbms_output.put_line('第' || v_count || '次循环');
exit when(v_count > 3);
 end loop;
end;


while语句示例
while <布尔表达式> loop
执行的语句
end loop;
--while示例
declare
 v_count number;
 v_time number;
begin
 v_count := 0;
 while (v_count < 3) loop
 v_count := v_count + 1;
 dbms_output.put_line('第' || v_count || '次循环');
end loop;
end;


for循环语句示例
for 循环计数器 in [reverse]下限 .. 上限 loop
执行的语句
end loop;
每循环1次,计数器自动加1,加上reverse关键字则自动减1,必须为从小到大的整数,可以使用exit when 退出循环
declare
 v_count number;
begin
 v_count := 8;
 for i in 1 .. v_count loop
 dbms_output.put_line('第' || i || '次循环');
exit when(i > 3);
 end loop;
end;


case when循环语法
--语法1
case 条件表达式
when 表达式结果1 then
语句1
 ...
 when 表达式结果n then
语句n
 [else 表达式结果]
end case;


--语法2
case 条件表达式
when 表达式结果1 then
语句1
 ...
 when 表达式结果n then
语句n
 [else 语句]
end case;


case when语句示例
select trunc(tur.created_date, 'dd'),
 count(case
 when tur.role_id = 'project_sh' then
 1
 else
 null
 end) as 角色1,
 count(case
 when tur.role_id = 'project_gz' then
 1
 else
 null
 end) as 角色2,


count(case
 when tur.role_id = 'project_sz' then
 1
 else
 null
 end) as 角色3,
 from test_ur tur
 group by trunc(tur.created_date, 'dd')
 order by trunc(tur.created_date, 'dd') desc;


5)goto 无条件跳转到指定标签所在部分
goto lable

<<lable>>
6)null 不执行任何操作的语句


10、异常和错误处理
1、Oracle提供异常情况(exception)和异常处理(exception handler)来实现对错误的处理。
2、异常情况(exception)指在正常执行过程中未预料的事件,程序块的异常处理预定义错误和自定义错误,运行PL/SQL块时一旦产生异常而没有指出如何处理时,就会自动终止整个PL/SQL块的运行。
3、异常错误分为3类(预定义错误、非预定义错误、自定义错误)
预定义错误:无需在程序中定义,由Oracle自动引发,共24个,直接在异常中使用。
非预定义错误:需在程序中定义,由Oracle自动引发
自定义错误:需在程序中定义,且需在程序中引发。


1)预定义错误
exception
 when No_data_found then
dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss') ||'execute failure');
2)非预定义错误
--定义错误
<异常情况> exception;
--与标准的Oracle错误关联
pragma exception_init(<异常情况>,<异常代码>);
--处理错误
exception
 when foundError then
dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss') ||'execute failure');


3)自定义错误
--定义错误
<异常情况> exception;
--通过raise引发错误
raise 异常情况
--处理错误
exception
 when raiseError then
dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss') ||'execute failure');



4)修改自定义错误消息
dbms_standard.raise_application_error(errorNumber,errorCode,errorsMsg);
errorNumber:错误编号: -20000~-20999
errorMsg:提示的错误消息(<2014KB)
errorFlag:true 将错误添加到错误列表,false 替换当前的错误列表,缺省为false
dbms_standard.raise_application_error(-20001,'错误的消息');
记录错误关键字:
sqlcode:错误编号 如:6502
sqlerrm:错误消息 如:ORA-06502: PL/SQL: 数字或值错误 : character string buffer too small (<500KB)
dbms_output.put_line('错误编号_' || sqlcode || '_错误信息_' || sqlerrm);
when others exception必须放在异常

首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle 18C 建库提示 ORA-12754 .. 下一篇MySQL中的DDL(Data Definition La..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目