begin
execute immediate 'drop table tbname';
execute immeidate 'create table tbname ...';
end;
/

解决方案 »

  1.   

    如果不用excute immediate呢?
      

  2.   

    SQL_TEXT:='drop table tbname'
    CUR_ID:=DBMS_SQL.OPEN_CURSOR;
    DBMS_SQL.PARSE(CUR_ID,SQL_TEXT,DBMS_SQL.NATIVE);
    STAT:=DBMS_SQL.EXECUTE(CUR_ID);
    DBMS_SQL.CLOSE_CURSOR(CUR_ID);
      

  3.   

    declare
    begin
    execute immediate 'drop table students';
    execute immediate 'create table students(
           id number(5) primary key,
           first_name varchar2(20),       
           last_name varchar2(20),
           major varchar2(30),
           current_credits number(3)
    )';
    end怎么还是不行啊
      

  4.   

    我不知道问什么oracle这么费劲,在sql server里,drop create就搞定了。痛苦啊~~
      

  5.   

    declare
    begin
    execute immediate 'drop table students';
    execute immediate 'create table students(
           id number(5) primary key,
           first_name varchar2(20),       
           last_name varchar2(20),
           major varchar2(30),
           current_credits number(3)
    )';
    end;确实可以了,各位达人有没有什么更好的办法。
      

  6.   

    SQL> begin
      2  execute immediate 'drop table tb1';
      3  execute immediate 'create table tb1(
      4             aa number,
      5             bb number)';
      6  end;
      7  /PL/SQL 过程已成功完成。SQL> desc tb1;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ------
     AA                                                 NUMBER
     BB                                                 NUMBERSQL> 有什么错误提示?
      

  7.   

    如果已知有此表
    drop table tb1
    create table tb1 ( a varchar2(2));
    如果不確定有此表
    DECLARE INTA NUMBER;
    BEGIN
      SELECT COUNT(1) INTO INTA FROM TAB WHERE TNAME='TB1';
      IF INTA=0
      BEGIN
        EXECUTE IMMEDIATE 'CREATE TABLE TB1 ( A VARCHAR2(2))';
      END;
      END IF;
    END