6 关于 Oracle NULL栏位和PL./SQL执行实验

今日有针对NULL值有了相关实验. 对NULL 值插入的讨论.

1, PL/SQL 中可以执行插入‘‘或者NULL 的操作, 前提是栏位允许为空.

2, 可以对NULL进行一系列数据库运算. 如:

SELECT ROUND(TO_NUMBER(MAX(A.IN_STATION_TIME)-SYSDATE))*24 FROM SFISM4.R_WIP_TRACKING_T A WHERE

A.IN_STATION_TIME IS NULL

总结: 相应TO_NUMBER(NULL)也是可行, MAX 也是可行得,没有问题.

3, 回归主题, SQL 原本的样子要做成这个样:

INSERT INTO SFISM4.R_DT_PCB_OVERTIME_T F

(F.SERIAL_NUMBER,

F.MODEL_NAME,

F.LINE_NAME,

F.PRODUCTION_TIME,

F.INTERCEPT_TIME,

F.EXPRIATUION_HOUR,

F.STATE_FLAG,

F.SEND_USER)

(SELECT ‘COCO111111111‘,

‘NIUBI1‘,

‘15555‘,

NVL(NULL, MAX(A.IN_STATION_TIME)),

SYSDATE,

NVL(ROUND(TO_NUMBER(MAX(A.IN_STATION_TIME)-SYSDATE))*24, ‘0‘),

‘1‘,

‘1‘

FROM SFISM4.R_WIP_LOG_T E

WHERE E.SERIAL_NUMBER = ‘COCO111111111‘) AND E.GROUP_NAME = ‘SMTS‘)

结果, 部分执行后, 一条也不会插入. Insert 操作, 根据子查询, 如果子查询为空, 那么什么都不会插入.

4, 高潮来了-- 去掉子查询中的WHERE后, 即SELECT 条件都是肯定有值后, 居然将表E中全部记录插入. 啊, 幸亏是测试库, 数据量不大, 但是也执行了5s. 好吧, 异常. 全部删除!  可见根据结果集Insert还是需要慎重啊, 否则将多少垃圾数据在实际中.

5, 回归本意.  最终针对NULL值单独判定, 防止意外大量数据产生.

来自为知笔记(Wiz)

时间: 2024-08-03 01:08:07

6 关于 Oracle NULL栏位和PL./SQL执行实验的相关文章

oracle 11g 64位使用PL/SQL无法登陆的解决方法(转)

因为要用PL/SQL,所以今天刚安装oracle 11g 64位,结果打开之后PL/SQL没有自动自动配置,登录不了. 然后网上找了如下博文,按照步骤问题解决.分享下博文内容 1)安装Oracle 11g 64位 2)安装32位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0) 下载instantclient-basic-win32-11.2.0.1.0.zip (一定得是32位的,不要下错了版本,Oracle官网有下载),将其解压至Oracle安

Oracle基础(四)pl/sql

PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL).PL/SQL是Oracle数据库对SQL语句的扩展.在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断.循环等操作实现复杂的功能或者计算的程序语言. 总结下来就是是sql语言的扩展,sql语句+ 变量和常量+条件语句+循环语句+例外处理各种错误! PL/SQL的作用 使用PL/SQL可以编写具有很多高级功能的程

Oracle 学习笔记 17 -- 异常处理(PL/SQL)

程序在执行过程中出现异常是正常的,在程序的编写过程中出现异常也是不可避免的.但是要有相应的异常处理的机 制,来保证程序的正常执行.PL/SQL程序执行过程中出现的错误,称为异常.一个优秀的程序都应该能够正确处理 各种出错的情况,并尽可能的从错误中恢复.PL/SQL提供了异常处理机制. 概念: 异常处理(exception)是用来处理正常执行过程中未预料的事件,程序块的异常处理定义的错误和自定义的错误, 由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会异常的终止. 有三种类型的错误

ORACLE PATCH 版本的查询 PL/SQL

--ORACLE PATCH 版本的查询 PL/SQL SELECT DD.PATCH_NAME,        PP.CREATION_DATE,        PP.DRIVER_FILE_NAME,        LANG.LANGUAGE  FROM AD_PATCH_DRIVERS PP,        AD_APPLIED_PATCHES DD,        AD_PATCH_DRIVER_LANGS LANG WHERE PP.APPLIED_PATCH_ID = DD.APPL

Oracle 12c中增强的PL/SQL功能

英文链接:http://www.oracle.com/technetwork/issue-archive/2013/13-sep/o53plsql-1999801.html Oracle 12c增强了一系列定义和执行PL/SQL程序单元的方式.本文覆盖了Oracle 12c几个新特性: 1.为结果缓存条件优化了调用者权限函数 2.可以在SQL语句中定义和执行PL/SQL函数 3.通过ACCESSIBLE BY条件指定一个白名单来限制程序单元的访问 4.可直接授权角色给指定程序单元 调用者权限和P

oracle入门(6)——PL/SQL常用语法

[本文介绍] 本文不是”语法大全“,只是记录下作项目里自己常用的一些语法.方便查询. [语法] [输出]   (1)输出语法 DBMS_OUTPUT.PUT_LINE( ) [定义]   (1)定义变量: ...... as 变量名 类型(长度) begin ...... 例如: (2)定义变量 ,类型 依赖其他变量的类型 例如: 这样,改了name的类型,returnValue类型也跟着改变. (3)自定义类型(类似C语言的结构体)每次只能拿一条数据,不然会的报错. 例如: (4)以“表”做为

Oracle 11g+oracle客户端(32位)+PL/SQL develepment的安装配置

之前一直想学Oracle,可是就是安装配置Oracle一直未成功,让人很苦恼,特别是什么监听器什么的,一直没搞明白,弄了整整一天都没弄出来,上网查资料后发现资料上大多数都是参差不齐,不太详细明了,尝试过后都未成功,现在通过我的精心调制,总算安装成功了,想与大家分享!   一.Oracle 11g数据库的安装   1.安装前的准备 安装文件下载地址:http://pan.baidu.com/s/1pJ5S2BT 将Oracle11g的两个文件解压到同一个目录下,出现如下结构:    点击setup

Netsuite Formula > Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt

PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 组函数 本文将讨论如何利用单行函数以及使用规则. SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符.数字.日期.转换.和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数.这些函数均可用于SELECT,WHERE.ORDER BY等子句中,例如下面的例子中就包含了TO

---oracle 数据库的设计,PL/SQL(loop,for,if,case,while)

1.数据库的设计(DataBase Design): 针对用户特定的需求,然后我们创建出来一个最实用而且性能高的数据库! 数据库设计的步骤: 01.需求分析 02.概念结构设计 03.逻辑结构设计 04.物理机构设计 05.数据库的实施 06.数据库的运行和维护 数据库的3大范式: 1.确保每列的原子性!每一列都是一个不可再分的数据! 2.确保每列都和主键相关! 3.确保每列都和主键有直接的关系,而不是间接依赖(传递依赖)! -----------------------------------