“select * into 表2 from 表1与insert into 表2 select * from 表1”的区别,网上都有,第一种情况:表2可以不存在,自动创建并有数据;第二种情况:是表2必须得手动创建好。
但是我在PL/SQL工具中实验的时候,第二种情况是可以执行的,但是第一种情况,编译都通不过,报ORA-00905 missing keyword,为什么呢?

解决方案 »

  1.   

    1.SQL> select * into ccode1 from ccode;
     
    select * into ccode1 from ccode
     
    ORA-00905: 缺失关键字2.SQL> insert into ccode1 select * from ccode;
     
    insert into ccode1 select * from ccode
     
    ORA-00942: 表或视图不存在都不能执行
      

  2.   

    我不是写了吗,第二种情况时,你的ccode1必须手动创建这个表(结构与ccode一致),才能把ccode表中数据复制给ccode1表,第一种情况为什么不能执行,等待高手赐教
      

  3.   

    select * into 表2 from 表1
    --oracle中有这样的写法?
    --应该是这样吧
    create table 表2 as select * from 表1
      

  4.   


    --表2不存在,执行下面的语句可以创建表2并将表1数据插入到表2中。
    create table 表2 as select * from 表1;
    --表2必须存在,且结构与表1相同
    insert into 表2 select * from 表1;
    --Oracle好像没有这种语法
    select * into 表2 from 表1;
      

  5.   

    楼主进错区了
    select * into 表2 from 表1;
    这是SQLSERVER的语法
      

  6.   

    select * into 表2 from 表1;
    没有这种语法…
      

  7.   

    ---没什么可比的  一个是MSSQL  一个是ORACLE
    --mssql 的写法   直接复制表数据跟结构(前提表不存在)
    select * into 表2 from 表1  
    ---oracle 的写法 ---复制数据(前提表存在)
    insert into 表2 select * from 表1” 
      

  8.   

    select * into 表2 from 表1
    是SQL的语法
      

  9.   

    楼主没有进错区,只是语法理解有些问题。
    这个“表2”理解为变量时,在 oracle 中就可以执行;
    如果非要当做表来对待的话,这个变量的类型必须是复合类型,如:记录类型、表类型、嵌套表类型或VARRAY 类型。
      

  10.   


    楼主显然不是这个意思。他说的应该还是SQLServer/Sybase的语法。
      

  11.   

    第一种  很少用   按你说  那一般是用create tabel as
      

  12.   

    select .. into   对单个字段的变量用的还是比较多的
      

  13.   

    第一种情况我也报这种错误 用下面这个就不会了
    create table NewTable as select * from emp; 
      

  14.   

    在表ccode1没有创建的情况下直接从ccode生成(ccode的数据同时写进ccode1)
    create tabel ccode1 as select *from ccode;
      

  15.   

    oracle没有第一条语句的语法,可以用create table XX as select * from XXX 代替。
      

  16.   

    第一种情况应该是这样的
    create table 表2的名称 as 
    select * from 表1 where ……
      

  17.   

    lz是不是这个意思啊,
    对于insert into table2 select * from table1 这个语法不论是在oracle还是sql server中都可以执行,只要表结构相同就不会出错
    对于select * into table2 from table1 对于oralce 是没有这样的语法的,但是在oracle的procedure中可以用select table2_column into variable_name from table2 这个是可以的,只是把table2中的一个字段的值赋值给了某一个变量,但是
     select table2_column  from table2 只能是查出一行一列
    sql server中select * into table2 from table1  如果table2不存在就会自动创建一个,也不会报错
      

  18.   

    -- 以下是 SQL Server 的语法(Oracle 没有这样的语法)
    select * into 表2 from 表1-- 以下是 Oracle和SQL Server共用的语法
    -- (在执行下面的语句前,表2必须存在,且其字段结构必须跟表1相同或兼容):
    insert into 表2 select * from 表1
      

  19.   

    -- 以下是 SQL Server 的语法(Oracle 没有这样的语法)
    select * into 表2 from 表1-- 与上面语句等同的Oracle 的语法为:
    create table 表1 as select * from 表2;-- 以下是 Oracle和SQL Server共用的语法
    -- (在执行下面的语句前,表2必须存在,且其字段结构必须跟表1相同或兼容):
    insert into 表2 select * from 表1
      

  20.   

    莫非这就是所谓的SQL的方言?