zoukankan      html  css  js  c++  java
  • 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(NULLMAX(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值单独判定, 防止意外大量数据产生.





  • 相关阅读:
    powershell查看pc信息的常用命令
    OSPF_Network-type
    redistribute and Suboptimal routing
    redistribute_prefix
    分发列表
    自增和自减
    逻辑运算
    判断闰年
    XenApp简单部署
    使用git将本地文件提交到github存储库
  • 原文地址:https://www.cnblogs.com/hijushen/p/4251525.html
Copyright © 2011-2022 走看看