oracle 如何在创建[重复]之前检查表是否存在

6tdlim6h  于 2023-06-22  发布在  Oracle
关注(0)|答案(1)|浏览(115)

此问题已在此处有答案

Check table exist or not before create it in Oracle(9个回答)
11天前关闭
我正在使用dblink从远程数据库设置数据库
下面是我创建表和约束的脚本。

begin 
     
  dbms_utility.exec_ddl_statement@mydblink('CREATE TABLE MYTABLE1
   (ID NUMBER(5,0) GENERATED ALWAYS AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOKEEP  NOSCALE , 
    CODE NVARCHAR2(15), 
    DESCRIPTION NVARCHAR2(125), 
    IS_ACTIVE NUMBER(1,0)   DEFAULT 1
   )') ;
   
  dbms_utility.exec_ddl_statement@mydblink('CREATE UNIQUE INDEX MYTABLE1_PK ON MYTABLE1 (ID) 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)');
  
   end;

我想在创建它们之前检查表是否存在,如果存在,则删除表。如何才能实现这一点呢。mydblink是用来从远程数据库连接到数据库的dblink
如何检查表/约束是否存在并将其全部删除。

1l5u6lss

1l5u6lss1#

你可以试试这个

declare
v_cnt number;
v_sql varchar2(100);
begin 
    select count(*) into v_cnt from user_tables where table_name = 'ABC';

    if v_cnt=0 then

      v_sql:='create table abc(col1 number)';
      dbms_output.put_line(v_sql);
      execute immediate v_sql;
end if;

end;

相关问题