sql >> データベース >  >> RDS >> Oracle

Oracleで作成する前に、テーブルが存在するかどうかを確認してください

    Reneもコメントしているように、最初にチェックしてからテーブルを作成することは非常にまれです。メソッドに従って実行中のコードが必要な場合は、次のようになります。

    declare
    nCount NUMBER;
    v_sql LONG;
    
    begin
    SELECT count(*) into nCount FROM dba_tables where table_name = 'EMPLOYEE';
    IF(nCount <= 0)
    THEN
    v_sql:='
    create table EMPLOYEE
    (
    ID NUMBER(3),
    NAME VARCHAR2(30) NOT NULL
    )';
    execute immediate v_sql;
    
    END IF;
    end;
    

    しかし、私はむしろ例外に追いつきたいので、不要なコード行を節約できます:

    declare
    v_sql LONG;
    begin
    
    v_sql:='create table EMPLOYEE
      (
      ID NUMBER(3),
      NAME VARCHAR2(30) NOT NULL
      )';
    execute immediate v_sql;
    
    EXCEPTION
        WHEN OTHERS THEN
          IF SQLCODE = -955 THEN
            NULL; -- suppresses ORA-00955 exception
          ELSE
             RAISE;
          END IF;
    END; 
    /
    


    1. OracleMINUS演算子の説明

    2. ボイラープレートの美しいブロック

    3. SQLバディ–WebベースのMySQL管理ツール

    4. PostgreSQLクエリで行番号を表示するにはどうすればよいですか?