在oracle-ORA 00922中创建表查询

时间:2016-05-04 03:59:06

标签: oracle

我正在尝试在oracle 11g中创建一个表,它应该只在第一次创建,如果它不存在的话。如果存在则不应创建表。

create table IF NOT EXISTS sample_temp
(
    SFL_ID number(10) not null,
    STM_ID number(10) not null,
    FIL_ID number(10) not null,
    SYSTEM_GENERATED_FL char null    ,
    SFL_DELETE_FL char not null,
    SFL_VERSION_ID number(10) not null,
    PTN_ID number(10) not null); 

这给出了ORA-00922错误,告诉单词“if not”附近的语法错误。我究竟做错了什么? Oracle中是否支持“如果不存在”?那我该怎么做呢?我实际上是想通过jdbc创建它。

3 个答案:

答案 0 :(得分:0)

Oracle不支持IF NOT EXISTS语法。最简单的解决方案是运行另一个查询来检查数据库的模式中是否已存在表。

如果您以用户orcl进行连接,并且您尝试创建的表将在同一架构上,那么您可以执行此操作

 select count(*) from user_tables where table_name=upper('yourtable');

如果计数返回1,那么您知道该表存在,您可以跳过表创建过程。否则继续创建表格。

答案 1 :(得分:0)

如果表已经存在,则不能使用“if not exists”命令重新检查。您可以做一件事:您可以使用查询USER_TABLES或DBA_TABLES来检查您的表是否存在。如果它存在则执行您想要执行的操作,如果它不存在则可以创建一个新的。

答案 2 :(得分:0)

您只需将CREATE TABLE语句发送到Oracle引擎即可。如果表存在,则会返回错误,告知您表已存在。如果您需要在代码中进行进一步处理,则可以捕获此错误消息。