create or replace table 是错误的。
先看看表是否存在:
SELECT count(*) FROM  user_objects WHERE object_name='table_name';
如果出来的值为0,那就说明表不存在了。

解决方案 »

  1.   

    select * from all_tables where owner='用户名' and table_name='表名'(用户名一定要大写)
    判断是否有返回结果,如果有的话,则说明该表以存在
      

  2.   

    对不起,昨天我没说明白我的意思。
    我是想用一个sql文件来自动生成表。
      

  3.   

    如果有的话就先drop掉不行?
    drop table tbname1;
    create table tbname1(....);
    drop table tbname2;
    create table tbname2(....);
      

  4.   

    把话说得明白一点,省得大家在那儿猜!所有的表都放在tab中啊,
    可以用select * from tab,查看。你所谓的用一个sql文件来自动生成表,是什么意思?再具体一点!
      

  5.   

    可以以sysdba的身份查阅系统视图。select count(*)  from all_tables where owner='test' and table_name='table_name'或者将上面的语句写成存储过程,给程序调用就可以了!
      

  6.   

    --先试着drop掉,如果表存在,则删除,如果不存在,也无所谓
    drop table table_name;
    --再建表
    create table table_name  ...