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

ORA-00955の回避:nameは既存のオブジェクトによってすでに使用されています

    これは、スラッシュ/を付けたためです。 スクリプトの最後にあります。

    そのため、バッファ内の前のステートメントが再度実行されます。つまり、CREATETABLEステートメントは2回実行されます

    スラッシュを最後から削除します。個々のクエリのステートメントターミネータとしては、セミコロンで十分です。

    これが私のやり方です:

    SQL> BEGIN
      2     EXECUTE IMMEDIATE 'DROP TABLE TEMP_SOURCE';
      3  EXCEPTION
      4     WHEN OTHERS THEN
      5        IF SQLCODE != -942 THEN
      6           RAISE;
      7        END IF;
      8  END;
      9  /
    
    PL/SQL procedure successfully completed.
    
    SQL>
    SQL> CREATE TABLE TEMP_SOURCE
      2    (
      3      COL_1 VARCHAR2(30 CHAR),
      4      COL_2 VARCHAR2(30 CHAR),
      5      COL_3 VARCHAR2(30 CHAR)
      6    );
    
    Table created.
    
    SQL>
    

    そうは言っても、スクリプトには複数の問題があります。

    列名にスペースを含めることはできません。 COL 1 は無効な列名です。 無効な識別子エラーが発生します 。

    別の問題:

    追加のカンマがあります 列リストの最後



    1. Oracle SQLで、削除された(コミットされていない)行が現在のセッションでは表示されないのに、他のセッションでは表示されるのはなぜですか?

    2. SQLで2つのクエリの結果を組み合わせる方法

    3. 2つのSELECTクエリをマージする

    4. BIN $ c + eOnMB3RbKSEfg / rsxtAQ ==$ 0という名前の奇妙なテーブルをOracleデータベースから削除するにはどうすればよいですか?