`
sjk2013
  • 浏览: 2182240 次
文章分类
社区版块
存档分类
最新评论

PL/SQL每日一题:含有NULL的IF条件

 
阅读更多

些选项在执行之后会显示"Hello Earth"?


(A)
DECLARE
   l_total   NUMBER;
   l_name    VARCHAR2 (10) := 'PL/SQL';
BEGIN
   IF l_name = 'PL/SQL' OR l_total > 100
   THEN
      DBMS_OUTPUT.put_line ('Hello Earth');
   ELSE
      DBMS_OUTPUT.put_line ('Hello Moon');
   END IF;
END;
/

(B)
DECLARE
   l_total   NUMBER;
   l_name    VARCHAR2 (10) := 'PL/SQL';
BEGIN
   IF l_total > 100
   THEN
      DBMS_OUTPUT.put_line ('Hello Earth');
   ELSE
      DBMS_OUTPUT.put_line ('Hello Moon');
   END IF;
END;
/

(C)
DECLARE
   l_total   NUMBER;
   l_name    VARCHAR2 (10) := 'PL/SQL';
BEGIN
   IF l_total > 100 OR l_total IS NULL
   THEN
      DBMS_OUTPUT.put_line ('Hello Earth');
   ELSE
      DBMS_OUTPUT.put_line ('Hello Moon');
   END IF;
END;
/

(D)
DECLARE
   l_total   NUMBER;
   l_name    VARCHAR2 (10) := 'PL/SQL';
BEGIN
   IF NVL (l_total, 200) > 100
   THEN
      DBMS_OUTPUT.put_line ('Hello Earth');
   ELSE
      DBMS_OUTPUT.put_line ('Hello Moon');
   END IF;
END;
/


案:ACD


A: 未初始化的变量为NULL, IF条件相当于IF TRUE OR NULL, 前面的TRUE会导致OR被忽略,整个结果还是TRUE
B: 未初始化的变量为NULL, IF条件里的表达式被求值为NULL, 代码会走到ELSE里面去。
C: IF 里面用了IS NULL, 结果为TRUE
D: NVL把NULL变成了200, 结果为TRUE

分享到:
评论

相关推荐

    PL/SQL学习笔记

    PL/SQL有三种集合 联合数组 嵌套表 可变数组 联合数组详解: 什么是数组?数组有什么特点 数据是线性存放的,在内存中地址是连续的 可以用索引来访问 定义联合数组? 联合数组不需要定义长度,他能容纳的元素最大...

    PL/SQL 基础.doc

    PL/SQL 基础,一个不错的 PL/SQL 参考手册。内容预览: ---- 第一章 PL/SQL 简介 ---- 1. Oracle应用编辑方法概览 1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和...

    C# 访问Oracle示例+PL/SQL+存储过程+触发器 完整示例 测试可用 易懂

    --PL/SQL基础5 条件if declare vid products.id%type; vprice products.price%type; begin vid:=&编号; select price into vprice from products where id=vid; if vprice dbms_output.put_line('价格在...

    PLSQL.Developer(X64) v12.0.1.1814 主程序+ v11中文包+keygen

    The new PL/SQL Clipboard is a dockable tool that stores the history of all SQL and PL/SQL code you copy to the Windows clipboard, so that you can paste the clipboard item again in the future....

    plsqldev12.0.4.1826x64主程序+ v12中文包+keygen

    The new PL/SQL Clipboard is a dockable tool that stores the history of all SQL and PL/SQL code you copy to the Windows clipboard, so that you can paste the clipboard item again in the future....

    PLSQL_Developer 5.1.2 for oracle and key

    PLSQL_Developer 5.1.2,* PL/SQL Beautifier added * Localization functionality added (Japanese version available, other languages will follow) * Compiler Hints added for unused declarations, unused ...

    Oracle P/L SQL实现FTP上传、下载功能

    Oracle P/L SQL实现FTP上传、下载功能,以下是此过程包的头部,包体经常打包处理plb,感兴趣用户可以下载下来。 --Oracle上的FTP功能 Create or Replace Package UTL_FTP AUTHID CURRENT_USER as Type Connection ...

    oracle实验报告

    PL/SQL块中的可执行部分是由一系列语句组成的(包括对数据库进行操作的SQL语句,PL/SQL语言的各种流程控制语句等)。在块中对数据库查询,增、删、改等对数据的操作是由SQL命令完成的。在PL/SQL块中,可以使用SQL的...

    PLSQL.Developer(X32) v12.0.1.1814主程序+ v11中文包+keygen

    The new PL/SQL Clipboard is a dockable tool that stores the history of all SQL and PL/SQL code you copy to the Windows clipboard, so that you can paste the clipboard item again in the future....

    plsqldev12.0.4.1826x32主程序+ v12中文包+keygen

    The new PL/SQL Clipboard is a dockable tool that stores the history of all SQL and PL/SQL code you copy to the Windows clipboard, so that you can paste the clipboard item again in the future....

    PLSQL.Developer(X64) v11.0.5.1790 主程序+ v11中文包+keygen - 副本

    SQL Window reported incorrect error location if a statement starts with spaces 64 bit specific Copy text could include a background color for spaces Export all as xls/xlsx could raise an error about...

    PLSQL.Developer v11.0.4.1774 主程序+ v11中文包+keygen

    When using date/time selector in the SQL result grid, PL/SQL Developer would lose focus The file format encoding preference "Always as UTF8" did not work for the Program Window Crash recovery saved ...

    数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    Oracle8i_9i数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    Oracle sqldeveloper without jdk (win+linux)

    - Bug # 4918539: ORA-ORA-06502 or ORA-01460 may occurs if a procedure is executed through the Run PL/SQL dialog box and a string with multibyte characters is assigned to one of the parameters. ...

    精通SQL--结构化查询语言详解

    第1章 数据库与sql基础 1 1.1 数据库的基本概念 1 1.1.1 数据库的由来 1 1.1.2 数据库系统的概念 3 1.2 数据库系统的结构、组成及工作流程 3 1.2.1 数据库的体系结构 3 1.2.2 数据库系统的组成 4 1.2.3 ...

    Oracle 10g 开发与管理

    (一)PL/SQL标识符 (给变量命名) 56 (二)标量变量 56 1.PL/SQL标识符 56 2.变量声明(名称、类型、值) 57 3.常量声明 57 (三)为变量和常量赋值 57 1.赋值的位置 57 2.赋值方式 57 (四)作用域:可以访问该...

    精通SQL 结构化查询语言详解

    《精通SQ:结构化查询语言详解》全面讲解SQL语言,提供317个典型应用,读者可以随查随用,针对SQL Server和Oracle进行讲解,很有代表性。 全书共包括大小实例317个,突出了速学速查的特色。《精通SQ:结构化查询语言...

    Oracle_Database_11g完全参考手册.part3/3

    第16章 DECODE和CASE.SQL中的if-fhen-else 第17章 创建和管理表、视图、索引、群集和序列 第18章 分区 第19章 Oracle基本安全 第Ⅲ部分 高级主题 第20章 高级安全性-虚拟专用数据库 第21章 高级安全性:透明数据加密...

    Oracle_Database_11g完全参考手册.part2/3

    第16章 DECODE和CASE.SQL中的if-fhen-else 第17章 创建和管理表、视图、索引、群集和序列 第18章 分区 第19章 Oracle基本安全 第Ⅲ部分 高级主题 第20章 高级安全性-虚拟专用数据库 第21章 高级安全性:透明数据加密...

Global site tag (gtag.js) - Google Analytics