1. 程式人生 > >Oracle資料庫建表前,先判斷是否表存在,存在不建表,不存在則建表

Oracle資料庫建表前,先判斷是否表存在,存在不建表,不存在則建表

------建立TABNAME ----------
DECLARE
  TOTAL INT := 0;
BEGIN
  SELECT COUNT(1)
    INTO TOTAL
    FROM USER_TABLES A
   WHERE A.TABLE_NAME = 'TABNAME ';
  IF TOTAL > 0 THEN
    EXECUTE IMMEDIATE 'DROP TABLE TABNAME ';
  END IF;
END;
/
CREATE TABLE TABNAME (
  ---具體建表語句
);
 alter table TABNAMEadd constraint PK_TABNAME_ID primary key(id);

具體講解:

1、END;下面那行的斜槓“/”必須有哦,我開始就是沒有這個斜槓,一直報建表語句有錯,這個斜槓表示上面的語句執行結束

2、把上面的TABNAME換成自己的表名就ok了

3、最後的alter是建立表的主鍵

4、本示例是在user_tables系統表中查詢是否存在要建的表,其實還可以在all_tables中查詢,但是這樣寫必須在where中加owner=‘使用者名稱’。例如:下面SCOTT換成自己使用者名稱,也就是表的擁有者(連線資料的user)

declare 
      num   number; 
begin 
      select count(1) into num from all_tables where TABLE_NAME = 'EMP' and OWNER='SCOTT'; 
      if   num>0   then 
          execute immediate 'drop table EMP'; 
      end   if; 
end;