select TABLE_NAME from all_tables where table_name like 'AAAAA';
BEGIN 
 if SQL%notfound then
            execute immediate 'create table AAAAA
(
  bbb number,
  ccc number,
  ddd number
)
';
          ELSE
             execute immediate 'drop table AAAAA';
            execute immediate 'create table AAAAA
(
  bbb number,
  ccc number,
  ddd number
)
';
END;或是这样,也不行啊

解决方案 »

  1.   

    写个存储过程,
    begin
      select TABLE_NAME into v_table_name from all_tables where table_name ='AAAAA';   
      if v_table_name=null then
      begin
         execute immediate 'create table AAAAA
    (
      bbb number,
      ccc number,
      ddd number
    )
    ';
      end;
      else 
      begin
        execute immediate 'drop table AAAAA';
                execute immediate 'create table AAAAA
    (
      bbb number,
      ccc number,
      ddd number
    )
    ';
      end;end;
      

  2.   

    declare TableCount number;
    begin
         select count(table_name) into TableCount from all_tables where table_name like 'AAAAA';
         if TableCount > 0 then
            execute immediate 'drop table AAAAA';
         end if;
            execute immediate 'create table AAAAA
    (
      bbb number,
      ccc number,
      ddd number
    )
    '; 
    end;唉,,自已结了吧,
    原来这样是可以的
    ,还是要说声谢谢
      

  3.   

    还想问个问题!!创建表时应该注意什么,因为在SQL SERVER 下没有表空间也没有方案的概念,要是把SQL SERVER 下的表都转移到ORACLE下,
    是应该转到一个表空间下边?
      

  4.   

    表空间是根据数据库设计的需要而建立的,"SQL SERVER 下的表都转移到ORACLE下",根据情况指定表所在的表空间就可以了!不是一定要转到一个表空间下!
      

  5.   

    还有个问题,顺便问一下,~
    如果在SQL-SERVER 里面是自增ID的列,也就是种子列,就是每次进一条记录时,其ID都会加1如果对照到ORACLE里,应该怎么处理~(不用ROWID)因为那个种子中间有可能是断着的~
      

  6.   

    CREATE SEQUENCE sequence_name
      START WITH 1  ---其始数值
      MAXVALUE 999999999999999999999999999 ---最大值
      MINVALUE 0调用是用sequece_name.nextval就可以了
      

  7.   

    我的意思是,比如一张表,第一个主键是自增的,而我查INSERT 一条时,是不是就是这样子insert into aa (自增,列1)VALUES(sequece_name.nextval,'AAA')可要是有多个自增ID的表,怎么办?
    是创建一个 SEQUENCE 就对应到一张表上吗?