私は非常に厄介な問題に直面しています。私は(Notepad ++で)いくつかのSQLスクリプトを書きました。SQL * Plusで(Windows 7ではコマンドラインから)実行しようとすると、のようなエラーが発生しORA-00933: SQL command not properly ended
ます。
次に、スクリプトをコピーしてSQL Developerワークシートウィンドウに貼り付け、[実行]ボタンを押すと、スクリプトは問題/エラーなしで実行されます。
長い調査の結果、SQL * Plusには、理解できない空白(改行文字やタブを含む)に問題があると思いました。
SQL Developerは奇妙な空白を取り除く方法を知っていると思うので、これを試しました。スクリプトをSQL Developerワークシートウィンドウに貼り付け、そこからコピーしてSQLスクリプトに貼り付けます。これで一部のファイルの問題は解決しましたが、すべてのファイルでは解決しませんでした。一部のファイルは、明らかな理由もなく、場所によってエラーを表示し続けます。
この問題が発生したことはありますか?コマンドラインからSQL*Plusでこれらのスクリプトを実行できるようにするにはどうすればよいですか?
アップデート:
SQL * Plusでは機能しなかったが、SQLDeveloperでは機能したスクリプトの例:
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
(このエラーが発生するすべてのファイルで何らかの理由で、エラーは最後のセミコロンの前の最後の行に表示されます)。