2012-05-02 11 views
8

私は非常に厄介な問題に直面しています。私は(Notepad ++で)いくつかのSQLスクリプトを書いています。 SQL * Plus(Windows 7のコマンドラインから)でそれらを実行しようとすると、ORA-00933: SQL command not properly endedのようなエラーが発生します。SQL * PlusはSQL Developerが実行するSQLスクリプトを実行しません

次に、&をコピーしてSQL Developerワークシート・ウィンドウに貼り付け、「実行」ボタンを押してスクリプトを問題なく実行します。

長い調査の後、私はSQL * Plusが理解できない一部の空白(改行文字やタブを含む)に問題があると考えました。

私は、奇妙な空白を取り除く方法を知っていると仮定しているので、私はこれを試しました。SQL Developerワークシートウィンドウにスクリプトを貼り付け、SQLスクリプトにコピーして貼り付けます。これは一部のファイルで問題を解決しましたが、すべてのファイルでは解決しませんでした。一部のファイルでは、明らかな理由がなくても場所にエラーが表示され続けます。

これまでにこの問題が発生しましたか?コマンドラインでSQL * Plusによってこれらのスクリプトを実行できるようにするにはどうすればよいですか。

UPDATE:

SQL * Plusで動作しますが、SQL Developerを使用した仕事をしたしませんでしたスクリプトの例:

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 

; 

私が取得エラー:

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 

エラーが表示されるのは(SELECT (LEVEL-1)+0 IS_ACTIVE FROM DUAL CONNECT BY LEVEL<=2) Bです(何らかの理由でこのエラーが発生するすべてのファイルで、エラーは前の最後の行に表示されます)最後のセミコロン)

+1

を? –

+0

@ Mark J. Bobak:上記の**更新**をご覧ください。 – rapt

答えて

17

空の行を削除します。
sqlplusの空行は、前の文を停止して新しい文を開始することを意味します。

か、空白行を設定することができます:あなたが動作しないスクリプトの(好ましくは小)の例を追加することができ

set sqlbl on 
+1

+1、空白行については知っていましたが、設定の設定についてはわかりませんでした。 –

+2

ハレルヤ!あなたは私の一日を救った!あなたは頭の爪に当たった。どうもありがとうございます! – rapt

関連する問題