ql/sql 循环语句、异常处理、事务处理!
发布日期:2021-08-17 10:07:38 浏览次数:41 分类:技术文章

本文共 3678 字,大约阅读时间需要 12 分钟。

一、ql sql 循环语句?

/*1.loop循环           语法:       声明循环变量    loop       判断循环条件 ,如果循环条件不成立,跳出循if 条件表达式 then    exit;    end if;        语句块;        改变循环变量的值    end loop;     举例:输出1到100以内的自然*/declare     --声明循环变量     v_i number(8):=1;begin  loop    if v_i>100 then-- 判断循环条件,条件成立,跳出循环       exit;    end if;    dbms_output.put_line('输出数字:'||v_i);-- 输出1到100以内的自然数    v_i:=v_i+1; -- 改变循环变量的值  end loop;end;--需求:输出部门表的所有内容?--into只能用一个或者一行的方式赋值,我们可以用bulk collect into来给行类型变量整体赋值,也就是说可以一次性--把所有数据查询出来,为table类型的变量赋值。declare-- 声明table类型   type dept_table_type is table of dept%rowtype   index by binary_integer;-- 声明table类型的变量,用来存储部门表的所有数据   v_dept dept_table_type;-- 声明循环变量   v_i number(8):=1;   begin  -- 查询所有部门表的内容,放到v_dept变量中  select * bulk collect into v_dept from dept;  loop   if v_i>v_dept.count then --设置条件 结束循环    exit;    end if;    dbms_output.put_line(      '部门编号'||v_dept(v_i).deptno||'  部门名称'||v_dept(v_i).dname||'   部门位置'||v_dept(v_i).loc    );    v_i:=v_i+1; --改变循环变量的值  end loop;    end;/**2.while循环语法:  声明循环变量,给循环变量赋初始值while 条件表达式loop      语句块;      改变循环变量的值end loop;举例:输出1到100以内的自然*/declare    v_i number(6):=1;-- 声明循环变量begin  while v_i<101--如果条件成立,执行循环    loop      dbms_output.put_line(v_i);      v_i:=v_i+1;-- 改变循环变量的值    end loop;end;/**3.for 循环     语法:         for 循环变量 in 循环变量的开始值..循环变量的结束值         loop语句块;         end loop;         注意:for循环,循环变量可以直接使用,不用声明。in 包含循环变量的开始值和结束值*/--举例:输出1到100以内的自然begin  for v_i in 1..100 -- 循环变量不用声明  真爽!    loop      dbms_output.put_line(v_i);    end loop;end;

二、异常处理

/**二、异常处理        直接让用户看到程序的信息是不好的,最好以友好的方式输出出来。*/--1.内置异常  举例:根据员工编号查询员工姓declare    --声明员工姓名的变量  v_ename emp.ename%type;  v_num number(5);  begin  v_num:=56565;  v_num:=465465465;  select ename into v_ename from emp;  dbms_output.put_line('员工姓名:'||v_ename);  exception -- 当异常发生的时候做什么处理 when no_data_found then    dbms_output.put_line('没有找到该员工编号');    --除数为0的异常 when zero_divide then     dbms_output.put_line('除数不能为0'); when too_many_rows then   dbms_output.put_line('返回行数过多'); when others then   dbms_output.put_line('出现了其他异常');  end;/**2.自定义异常语法:   declare   --声明异常变量变量名称 exception;begin     --抛出异常     raise 变量名称;exception     -- 处理异常     when 变量名称 then     业务处理end;*/--举例:根据员工编号删除员工信息,如果删除的员工不存在,抛出异常,在控制台打印没有删除成功declare   -- 声明异常变量   v_myex exception;  begin  -- 根据员工编号删除员工  delete from emp where empno=&no;  -- 暂时要用到隐含游标  if sql%notfound then     --抛异常    raise v_myex;  end if;-- 处理异常 exception  when v_myex then    dbms_output.put_line('要删除的员工不存在');  end;

三、事物处理

/**三、事物处理         事物的acid特性 and 事物的死锁*/--1.原子性  数据库增删改操作,要么全部成功,要么全部失败。/*2.一致性  对于数据库的操作必须符合业务逻辑。  张三给李四转1000元,不能出现张三的钱少了1000 李四就收到800*//**3.隔离性    多个数据库操作之间不能产生干扰  张三给李四转1000元,不能出现张三的钱少了1000,结果另外一个人王五的钱多了1000.*//**4.持久性  数据库的操作应该是永久持久化到物理介质(硬盘)上  张三给李四转1000元,不能出现今天张三的钱少了1000. 李四的增加了1000.过了一天张三的钱又回了。*//**5.pl/sql中事物的操作方式      在pl/sql中,可以定义事物的回顾点,可以回顾事物,也可以定义回滚点      savepoint 回滚点名称;            回滚事物      rollback to 回滚点名称;            提交事物      commit;            举例:往部门表中插入多条数据*/select * from dept;begin  -- 定义事物回滚点  savepoint a;  insert into dept values(1,'技术部','郑州');  insert into dept values(2,'公关部','郑州');    -- 回滚事物  rollback to a;  insert into dept values(12,'小卖部','郑州');    -- 提交事物  commit;end;/**6.事物的死锁       数据库中事物如果使用不当,有可能会出现死锁的问题。      爸爸对儿子说,你给我成绩单,我就给你玩具。      儿子对爸爸说,你给我玩具,我就给你成绩单。         7.oracle中锁的概念       oracle中使用锁的机制来实现事物。oracle中分两种常见的锁 排他锁,共享锁。       增删改数据库记录的时候,就会在       操作记录的行上加上排他锁。查询的时候会在查询的记录上加上共享锁。*/select * from dept;insert into dept values(21,'技术部','郑州');insert into dept values(22,'公关部','郑州');--模拟两个事物都对  数据库中的部门表1和2 的数据进行更新update dept set dname='技术部' where deptno=1;update dept set dname='公关部' where deptno=2;

 

转载于:https://www.cnblogs.com/ZXF6/p/10840298.html

转载地址:https://blog.csdn.net/weixin_30846599/article/details/99183765 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:基础知识
下一篇:安装hiredis后swoole扩展消失

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年03月13日 04时56分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

.net framework服务启动后停止_dos命令net图文教程,start启动系统服务stop停止服务批处理脚本... 2019-04-21
8k分辨率需要多大带宽_超乎想象!用RTX3080显卡连索尼8K电视玩游戏感受如何?... 2019-04-21
win10怎么开启aptx_Win10未来的黑科技?微软SurfaceFleet大曝光 2019-04-21
creo视图管理器使用方法_学以致用之中望3D—浅谈使用中望3D的初步感受 2019-04-21
周育如的音标口诀大全_花鸟画口诀大全,实用! 2019-04-21
心电图计算心率公式_医学常用的计算公式口诀(内外妇儿),赶快收藏! 2019-04-21
select 移动端 第一个无法选中_Python爬虫微博(移动端)评论 2019-04-21
华为云welink成像是反的_华为发布智能办公神器WeLink,可连接会议室开会,还可一键遥控报销和智能翻译... 2019-04-21
唱好铁血丹心谐音正规_趙贤典:打好“感情牌” 唱好“大合唱” 2019-04-21
aix系统vi修改命令_Linux基础知识必备:利用vi编辑器创建和编辑正文文件 2019-04-21
天涯明月刀开发_玩家被天涯明月刀手游“冷落”?六大门派角色竟不带正眼看人... 2019-04-21
this指向undefined uiapp_一个this都没有,真好 2019-04-21
add p4 多个文件_2-3【微信小程序全栈开发课程】index页面完善--vue文件代码解析... 2019-04-21
5w2h原则指的是什么_什么是5W2H分析法?一首小诗带入进入大门。 2019-04-21
技校毕业是什么学历_中等职业学校是什么_中等职业学校毕业是什么学历 2019-04-21
2压缩备份数据库_MySQL数据备份与恢复(二) xtrabackup工具 2019-04-21
英特尔cpu发布时间表_被嘲讽的英特尔核显,强大能力其实超乎你的想象 2019-04-21
chi2inv函数 matlab_MATLAB概率和统计(2) 2019-04-21
lisp修改上一个图素_在Windows上安装Haskell 2019-04-21
ad19 导出step 没有pcb_几款主流PCB软件哪个最好用,你用过几款? 2019-04-21