如果表不存在则创建表,如果在Oracle中不存在则创建序列

ars*_*nal 3 sql oracle

如果它不存在,我想创建一个下表.

create table TEST (
                id number NOT NULL PRIMARY KEY,  
                url varchar(1000) NOT NULL,  
                urlHash varchar(255) NOT NULL,  
                contentHash varchar(255),  
                modDate varchar(30),  
                contentLocation varchar(100),  
                status integer,  
                lastCrawlDate varchar(30)) ;
Run Code Online (Sandbox Code Playgroud)

所以我的问题是这样的 -

Create Table TEST if doesn't exist
Run Code Online (Sandbox Code Playgroud)

以同样的顺序 -

create sequence test_seq start with 1 increment by 1 nomaxvalue;
Run Code Online (Sandbox Code Playgroud)

类似这样的查询也将用于序列 -

Create sequence test_sequence if doesn't exist
Run Code Online (Sandbox Code Playgroud)

DCo*_*kie 10

你可以做一个匿名的PL/SQL块:

DECLARE
  t_count INTEGER;
  v_sql VARCHAR2(1000) := 'create table TEST (
            id number NOT NULL PRIMARY KEY,  
            url varchar(1000) NOT NULL,  
            urlHash varchar(255) NOT NULL,  
            contentHash varchar(255),  
            modDate varchar(30),  
            contentLocation varchar(100),  
            status integer,  
            lastCrawlDate varchar(30))';
BEGIN
  SELECT COUNT(*)
    INTO t_count
    FROM user_tables
   WHERE table_name = 'TEST';

  IF t_count = 0 THEN
    EXECUTE IMMEDIATE v_sql;
  END IF;
END;
/
Run Code Online (Sandbox Code Playgroud)

同样,您可以使用USER_SEQUENCES查找现有序列并对其进行调整以适应.