SQL * Plus führt keine SQL-Skripts aus, die SQL Developer ausführt

Ich stehe vor einem sehr ärgerlichen Problem. Ich habe (in Notepad ++) einige SQL-Skripte geschrieben. Wenn ich jetzt versuche, sie mit SQL * Plus (über die Befehlszeile unter Windows 7) auszuführen, erhalte ich Fehler wieORA-00933: SQL command not properly ended.

Dann kopiere ich das Skript und füge es in das SQL Developer-Arbeitsblattfenster ein, drücke auf die Schaltfläche Ausführen und das Skript wird ohne Probleme / Fehler ausgeführt.

Nach einer langen Untersuchung stellte sich heraus, dass SQL * Plus ein Problem mit einigen Leerzeichen (einschließlich Zeilenumbrüchen und Tabulatoren) hat, das es nicht versteht.

Da ich davon ausgehe, dass SQL Developer weiß, wie man die komischen Leerzeichen entfernt, habe ich Folgendes versucht: Fügen Sie das Skript in das Arbeitsblattfenster von SQL Developer ein, kopieren Sie es von dort und fügen Sie es wieder in das SQL-Skript ein. Das löste das Problem für einige Dateien, aber nicht für alle Dateien. Einige Dateien zeigen an bestimmten Stellen Fehler ohne ersichtlichen Grund.

Hattest du jemals dieses Problem? Was muss ich tun, um diese Skripte von SQL * Plus über die Befehlszeile ausführen zu können?

AKTUALISIEREN:

Ein Beispiel für ein Skript, das nicht mit SQL * Plus, sondern mit SQL Developer funktioniert hat:

<code>SET ECHO ON;

INSERT INTO MYDB.BOOK_TYPE (
    BOOK_TYPE_ID, UNIQUE_NAME, DESCRIPTION, VERSION, IS_ACTIVE, DATE_CREATED, DATE_MODIFIED
)
SELECT MYDB.SEQ_BOOK_TYPE_ID.NEXTVAL, 'Book-Type-' || MYDB.SEQ_BOOK_TYPE_ID.NEXTVAL, 'Description-' || MYDB.SEQ_BOOK_TYPE_ID.NEXTVAL, A.VERSION, B.IS_ACTIVE, SYSDATE, SYSDATE FROM

    (SELECT (LEVEL-1)+0 VERSION FROM DUAL CONNECT BY LEVEL<=10) A,
    (SELECT (LEVEL-1)+0 IS_ACTIVE FROM DUAL CONNECT BY LEVEL<=2) B

;
</code>

Den Fehler bekomme ich:

<code>SQL> SQL> SET ECHO ON;
SQL>
SQL> INSERT INTO MYDB.BOOK_TYPE (
  2      BOOK_TYPE_ID, UNIQUE_NAME, DESCRIPTION, VERSION, IS_ACTIVE, DATE_CREATED, DATE_MODIFIED
  3  )
  4  SELECT MYDB.SEQ_BOOK_TYPE_ID.NEXTVAL, 'Book-Type-' || MYDB.SEQ_BOOK_TYPE_ID.NEXTVAL, 'Description-' || MYDB.SEQ_BOOK_TYPE_ID.NEXTVAL, A.VERSION, B.IS_ACTIVE, SYSDATE, SYSDATE FROM
  5  
SQL>         (SELECT (LEVEL-1)+0 VERSION FROM DUAL CONNECT BY LEVEL<=10) A,
  2          (SELECT (LEVEL-1)+0 IS_ACTIVE FROM DUAL CONNECT BY LEVEL<=2) B
  3  
SQL> ;
  1     (SELECT (LEVEL-1)+0 VERSION FROM DUAL CONNECT BY LEVEL<=10) A,
  2*    (SELECT (LEVEL-1)+0 IS_ACTIVE FROM DUAL CONNECT BY LEVEL<=2) B
</code>

Wie Sie sehen, ist der Fehler eingeschaltet(SELECT (LEVEL-1)+0 IS_ACTIVE FROM DUAL CONNECT BY LEVEL<=2) B (Aus irgendeinem Grund wird der Fehler in allen Dateien, die diesen Fehler erhalten, in der letzten Zeile vor dem abschließenden Semikolon angezeigt.)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage