`
iswift
  • 浏览: 189995 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

不得不记录下Oracle的条件语句

阅读更多

条件语句语法:

 

 

1、单一语句判断:

if  then
  sql 或 pl/sql
end if;

2、if else 判断:

if  then
  sql 或 pl/sql
else
  sql 或 pl/sql
end if;

3、多重判断:

if  then
  sql 或 pl/sql
elsif then
  sql 或 pl/sql
elsif  then
  sql 或 pl/sql
...
end if;

 

 这里的 elsif 是少了个e,我在编辑器里面打了n遍就是不变色,原来他语法少个e...  无语中。。。

 

 还有pl/sql 判断一个变量是否为空,也比较怪异。这里写下吧。。。

 

 declare 

cc varchar2(10) := '';
begin
  if cc is null then
    dbms_output.put_line('cc is null');
  end if;
  
  if cc = '' then
    dbms_output.put_line('dd is ""');
  end if;
end;

这里输出是:cc is null,这里居然进的是第一个if.不解。。
 

 

declare 
cc varchar2(10) := 's';
begin
  if cc is not null and cc  '' then
    dbms_output.put_line('first if..');
  end if;

  if cc is not null then
    dbms_output.put_line('second if...');
  end if;
end;

这里输出:second if...
 

 

   所以在pl/sql 里,判断变量不为空,用 is not null 就可以了,不要在加 <>  ''

 

 

  原来PL/SQL 里,''和null是否相等跟其数据类型相关。看例子。。

 

  declare

  a char(10) := ''; --定长空字符串
  b varchar(20) := ''; --可变长度空字符串
begin
  if a is null then
    dbms_output.put_line('a is null');
  else
    dbms_output.put_line('a is not null');
  end if;
  if b is null then
    dbms_output.put_line('b is null');
  else
    dbms_output.put_line('b is not null');
  end if;
end;

 

   结果:

 

 

 

 

a is not null
b is null


--结论就是在pl/sql中,如果是定长(char)的空字符串''和null不一样,可变长度(varchar)的空字符串和null是一样的。
 

 

 

 

分享到:
评论

相关推荐

    oracle数据库常用操作指令

    DELETE语句用于删除表中符合条件的记录。需要注意的是,DELETE操作并不会立即释放数据库空间,它只是将相应的数据块标记为unused。如果需要彻底清除表中所有数据并释放空间,应使用TRUNCATE命令。此外,DELETE操作也...

    oracle数据库开发规范.doc

    - **关键字与保留字**: 不得使用Oracle数据库中的关键字和保留字作为对象名,以防出现意外的语法错误。 **2. 空格禁用** - **禁止空格**: 严禁使用包含空格的名称来命名字段和表,以避免语法错误或不必要的麻烦...

    Oracle SQL Reference

    - **版权信息**: 版权所有者为Oracle公司及其关联公司,自1996年至2012年,版权所有,未经许可不得复制或传播。 - **作者与贡献者**: 文档由Diana Lorentz、Mary Beth Roeser担任主要作者,并有超过百位贡献者共同...

    Oracle对排序操作的优化措施

    - **非理想情况:** 如果排序数据超过了排序区的大小限制,则Oracle不得不将这部分数据转移到磁盘上的临时表空间进行排序,这将大大降低性能。 **2.3 调整排序区大小的方法** - **初始化参数SORT_AREA_SIZE:** ...

    Oracle 11g详细操作

    - 不得使用 Oracle 保留关键字。 ##### 3.2 SQL 语言介绍 - **SQL**(Structured Query Language,结构化查询语言)是一种用于管理关系数据库的标准语言,主要包括以下几类指令: - **DDL**(Data Definition ...

    Oracle 开发DBA SQL编写规范

    ### Oracle开发DBA SQL编写规范 #### 1. 引言 本文档旨在为Oracle数据库开发者提供一套标准化的SQL及PL/SQL编写指南,通过规范化SQL及PL/SQL的编写方式,提高代码的可读性、可维护性和执行效率。本规范适用于所有...

    Oracle Database PLSQL Language Reference 11g Release 2 (11.2)

    文档中还提及了授权和许可,明确指出文档以及相关软件的使用受到许可协议的限制,除非在许可协议或法律允许的情况下,不得对软件进行反向工程、拆解或反编译。 Oracle Database PL/SQL Language Reference 11g ...

    oracle 表和视图.

    - **表名**:指定新创建的表的名称,长度不得超过30个字符,在同一个模式下表名不可重复。 - **列名**:每个列都需要一个唯一的名称,支持中文或英文。 - **数据类型**:指定列的数据类型及其长度,例如`VARCHAR2(5)...

    oracle 10g错误代码手册

    《Oracle® Database Error Messages》是Oracle官方发布的文档,详细记录了Oracle 10g数据库中出现的各种错误代码及其解决方法。这份手册对于Oracle开发人员及维护人员来说具有极高的参考价值。 #### 二、Oracle 10...

    oracle 11g security guide

    Oracle数据库防火墙是Oracle 11g的一项重要安全特性,它可以监测并阻止恶意SQL语句的执行,保护数据库免受SQL注入攻击。 #### 6. 数据库入侵检测与响应 Oracle 11g具备入侵检测能力,能够识别异常行为并触发相应的...

    D17111GC11.Oracle.Database.10g.SQL.Fundamentals.II

    ### Oracle Database 10g: SQL Fundamentals II #### 知识点概览 本教材为Oracle Database 10g SQL Fundamentals II的部分内容,主要针对1z0-047 Oracle Database SQL Expert认证考试。内容涵盖了Oracle 10g数据库...

    Oracle官方讲稿2

    - **版权所有**:该课程及相关材料属于Oracle公司的专有财产,未经Oracle事先书面同意,不得披露、复制或分发给任何外部人员。 - **使用权限**:此课程仅用于内部培训目的,用户可以自行打印使用,但不得进行任何...

    Oracle SQL plus tutorial

    用户在使用过程中应遵守相应的许可证协议中的条款与条件,不得进行逆向工程、反编译或反汇编等操作。 #### 七、总结 **Oracle SQL Plus** 作为一款强大且实用的数据库管理工具,在数据库管理和开发工作中扮演着...

    记录被另一个用户锁定.txt

    这种情况下,如果一个用户的事务已经锁定了某些记录,而其他用户试图修改这些记录,则后者将不得不等待,直到前者的事务完成或回滚。本文将详细介绍Oracle记录被另一个用户锁定的现象、原因以及相应的解决方法。 ##...

Global site tag (gtag.js) - Google Analytics