这样可以不?
 EXECUTE IMMEDIATE  'CREATE TABLE T_GROUP_TEMP is select * from T_GROUP';
如果不可以难道只能  先建立表 然后 每条insert ??

解决方案 »

  1.   

    可以这样写
    create or replace procedure sp_cr
    is
    begin
     EXECUTE IMMEDIATE  'CREATE TABLE T_GROUP_TEMP as select * from T_GROUP';
    end;
      

  2.   

    但是执行到这行就报 missing or invalid optin 错误sql 语句有建表权限
      

  3.   


    AS 也试过了, 就改了IS 试试 
      

  4.   

    要给当前用户分配create any table权限
      

  5.   

    改成 AS 后 报 insufficient privileges
      

  6.   

     EXECUTE IMMEDIATE  'CREATE TABLE T_GROUP_TEMP as select * from T_GROUP';
      

  7.   

    这样写可以  不过最少要加上begin end
    错误信息说明你没有权限 可能是建表 或者是对T_GROUP的查询权限
      

  8.   


    很确定权限是有的,
    v_sql:='CREATE TABLE T_GROUP_TEMP is select * from T_GROUP'
    EXECUTE IMMEDIATE  v_sql;这样时 v_sql的值粘贴出来执行是正确的
      

  9.   

    is要改成as,否则有语法错误
    insufficient privileges说明权限不足
    T_GROUP上的查询权限,或者是建表权限
    假设当前用户名为user1,先登录具有dba权限的用户,执行
    grant create table to USER1;
    grant select on t_group to USER1;
    然后再登录user1执行过程
      

  10.   

    ...晕了.这个是本用户下的表的话不会有查询权限问题
    看下有没有建表权限,或者该表空间上有配额限制。如果建表权限是包含在某个角色里的话,用grant create table.. 对该用户显式授权
      

  11.   

    create or replace procedure sp_cr authid current_user
    is
    begin
     EXECUTE IMMEDIATE 'CREATE TABLE T_GROUP_TEMP as select * from T_GROUP';
    end;
     前提是当前用户有create table 的权限。
      

  12.   


     应该要 把is改成as! 
      

  13.   



    grant create,resourc to user;
      

  14.   

    Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 
    Connected as scottSQL> desc d;
    Object d does not exist.SQL> 
    SQL> begin
      2  execute immediate 'create table d as select * from dual';
      3  end;
      4  /
     
    PL/SQL procedure successfully completed
     
    SQL> select * from d;
     
    DUMMY
    -----
    X
     
      

  15.   

    看看你的这种写法根本就通不过的 
    SQL> desc dd;
    Object dd does not exist.
     
    SQL> SQL> 
    SQL> declare
      2  v_sql varchar2(100);
      3  begin
      4  v_sql := 'create table dd is select * from dual';
      5  execute immediate v_sql;
      6  end;
      7  /
     
    declare
    v_sql varchar2(100);
    begin
    v_sql := 'create table dd is select * from dual';
    execute immediate v_sql;
    end;
     
    ORA-00922: 选项缺失或无效
    ORA-06512: 在 line 6显然 is必须改成as
      

  16.   

    这个错误很显然 权限不足呀!!!
    要不使用sys用户 执行下 看看什么效果 
    begin
    EXECUTE IMMEDIATE  'CREATE TABLE T_GROUP_TEMP as select 1 from 你的表所属于的用户.T_GROUP where 1 >2';
    end;
    就这样执行
      

  17.   

    EXECUTE IMMEDIATE  'CREATE TABLE T_GROUP_TEMP is select * from T_GROUP';兄弟提示一下:把语句中的is 修改成 as 就可以了,祝您好运
      

  18.   

    create or replace procedure sp_cr authid current_user
    as
    begin
     EXECUTE IMMEDIATE 'CREATE TABLE T_GROUP_TEMP as select * from T_GROUP';
    end; 前提是当前用户有建表和建存储过程的的权限。
    报insufficient privileges肯定就是没有足够的权限.