zoukankan      html  css  js  c++  java
  • oracle 变量赋值

    在oracle 中使用 select 字段 into 变量 from 表 where 条件 这种方法给变量赋值时和MSSQL的行为有比较大区别.

    在MSSQL中如果在该表中未检索到任何行,则变量的值保持不变,如果检索到多条数据,则会将每一条数据的值依次赋给变量(顺序不保证永远相同) .但是在oracle中,只有取到唯一行的时候才会赋值成功,其它情况都会抛出一个异常.在MSSQL中利用对变量重复赋值可以产生一次非常巧妙的应用,还是非常好的功能.具体两种机制的好坏就不做出评价了.

    如果某些情况下我们希望检索不到任何行的时候,该变量保持之前的值即可而不需要抛出异常,这时该怎么办?

    同事给出的办法是用BEGIN *** END 隔离再用异常捕捉处理,如下:

    BEGIN

       select 字段 into 变量 from 表B where 条件;

       exception

    .....

    END;

    另一个方案是先查询该表的记录数,再判断是否赋值,如下:

     select count(*) into 变量A from 表B where 条件;

    if 变量A=1 then

       select 字段 into 变量 from 表B where 条件;

    end if;

    这种方法首先是要对表进行两次检索,其实是写起来比较麻烦.

    那么可以采用以下这种方法解决:

    select b.字段 into 变量

    from dual a left join 表B b on b.条件

    这种方法使用dual表让代码变得简单一些.但是如果表B中有多条记录,还是报错的

  • 相关阅读:
    Chrome扩展开发之一——Chrome扩展的文件结构
    Chrome扩展开发(Gmail附件管理助手)系列之〇——概述
    Springfox与swagger的整合使用
    Maven的简单使用
    关于接口功能自动化的思考
    发版流程优化备忘录
    Aho-Corasick 自动机 学习笔记
    Luogu P1495 曹冲养猪
    Luogu P2670 【扫雷游戏】
    1.1 整除
  • 原文地址:https://www.cnblogs.com/champaign/p/5882150.html
Copyright © 2011-2022 走看看