我現在面臨一個非常惱人的問題SQL腳本。我寫了(在Notepad ++中)一些SQL腳本。現在,當我嘗試通過SQL * Plus執行它們(通過命令行,在Windows 7上)時,我得到的錯誤如ORA-00933: SQL command not properly ended
。SQL * Plus不會執行該SQL開發者
然後我複製&將腳本粘貼到SQL Developer工作表窗口中,點擊運行按鈕,腳本執行時沒有任何問題/錯誤。
長時間調查後,我來到認爲,SQL * Plus有一些空格(包括換行符和製表符)的一個問題,它不明白。
因爲我認爲SQL Developer知道如何擺脫奇怪的空格,我試過這個:將腳本粘貼到SQL Developer工作表窗口中,然後從那裏複製並粘貼回SQL腳本。這解決了一些文件的問題,但不是所有的文件。有些文件不會在沒有明顯原因的地方顯示錯誤。
你有沒有過這樣的問題嗎?我應該怎麼做才能通過命令行通過SQL * Plus運行這些腳本?
UPDATE:
一個腳本,沒有使用SQL * Plus的工作,但做了與SQL開發工作的一個例子:
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
(出於某種原因,在出現此錯誤的所有文件中,錯誤出現在最後一行之前結論分號。)
你可以添加一個腳本,不工作的(最好是小)的例子嗎? –
@Mark J. Bobak:請參閱上面的** UPDATE **。 – rapt