ITPub博客

首页 > 数据库 > Oracle > ORACLE SQL一条语句同时插入多个表

ORACLE SQL一条语句同时插入多个表

原创 Oracle 作者:warren20 时间:2015-03-06 00:24:34 0 删除 编辑

    今天在网上看到一个贴子,用一条语句,将数据同时插入多个表中,觉得很新奇,就自己练了一下,将语句记录下来

STEP1:创建三个表,用于实验测试: 

  1. CREATE TABLE T_TABLE(OBJECT_ID NUMBER, OBJECT_NAME VARCHAR2(128), OBJECT_TYPE VARCHAR2(19));
  2. CREATE TABLE T_INDEX(OBJECT_ID NUMBER, OBJECT_NAME VARCHAR2(128), OBJECT_TYPE VARCHAR2(19));
  3. CREATE TABLE T_VIEW(OBJECT_ID NUMBER, OBJECT_NAME VARCHAR2(128), OBJECT_TYPE VARCHAR2(19));

STEP2:向三个表中插入数据

  1. INSERT ALL
  2.       INTO T_TABLE(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  3.       VALUES(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  4.       INTO T_INDEX(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  5.       VALUES(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  6.       INTO T_VIEW(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  7.       VALUES(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  8.       SELECT OBJECT_ID, OBJECT_NAME,OBJECT_TYPE
  9.       FROM DBA_OBJECTS WHERE OBJECT_TYPE IN('VIEW','TABLE','INDEX');

STEP3:清空三张表,分类插入数据,即带条件插入

  1. TRUNCATE TABLE T_TABLE;
  2. TRUNCATE TABLE T_INDEX;
  3. TRUNCATE TABLE T_VIEW;

将数据分类插入

  1. INSERT ALL
  2. WHEN OBJECT_TYPE='TABLE' THEN
  3.        INTO T_TABLE(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  4.        VALUES(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  5. WHEN OBJECT_TYPE='VIEW' THEN
  6.        INTO T_INDEX(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  7.        VALUES(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  8. ELSE INTO T_VIEW(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  9.        VALUES(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  10. SELECT OBJECT_ID, OBJECT_NAME, OBJECT_TYPE
  11. FROM DBA_OBJECTS WHERE OBJECT_TYPE IN ('VIEW','TABLE','INDEX');


STEP4:清空三张,INSERT  FIRST,即带条件插入

  1. INSERT FIRST
  2. WHEN OBJECT_ID<1000 THEN
  3.        INTO T_TABLE(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  4.        VALUES(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  5. WHEN OBJECT_ID>=1000 AND OBJECT_ID<2000 THEN
  6.        INTO T_INDEX(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  7.        VALUES(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  8. ELSE INTO T_VIEW(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  9.        VALUES(OBJECT_ID, OBJECT_NAME,OBJECT_TYPE)
  10. SELECT OBJECT_ID, OBJECT_NAME, OBJECT_TYPE
  11. FROM DBA_OBJECTS WHERE OBJECT_TYPE IN ('VIEW','TABLE','INDEX');


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30150152/viewspace-1449913/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: ORACLE 11G静默安装
请登录后发表评论 登录
全部评论

注册时间:2015-03-03

  • 博文量
    56
  • 访问量
    376702