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

WBOY
풀어 주다: 2016-06-07 16:07:51
원래의
1079명이 탐색했습니다.

今日有针对Oracle NULL值有了相关实验. 对NULL 值插入的讨论。PL/SQL 中可以执行插入

今日有针对Oracle 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值单独判定, 防止意外大量数据产生.

--------------------------------------分割线 --------------------------------------

rlwrap - 解决Linux下SQLPLUS退格、上翻键乱码问题

SQLPLUS spool 到动态日志文件名

Oracle SQLPLUS提示符设置

通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度

PL/SQL Developer实用技巧分享

--------------------------------------分割线 --------------------------------------

本文永久更新链接地址:

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!