Вопрос по sql – SQL * Plus не выполняет сценарии SQL, которые делает SQL Developer

9

Я сталкиваюсь с очень раздражающей проблемой. Я написал (в Notepad ++) несколько сценариев SQL. Теперь, когда я пытаюсь выполнить их с помощью SQL * Plus (через командную строку в Windows 7), я получаю такие ошибки, какORA-00933: SQL command not properly ended.

Затем я копирую & amp; вставьте сценарий в окно листа SQL Developer, нажмите кнопку «Выполнить», и сценарий будет выполнен без каких-либо проблем / ошибок.

После долгого исследования я подумал, что в SQL * Plus есть проблема с некоторыми пробелами (включая символы новой строки и табуляции), которые он не понимает.

Поскольку я предполагаю, что SQL Developer знает, как избавиться от странных пробелов, я попробовал это: вставьте сценарий в окно рабочего листа 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 (по некоторым причинам во всех файлах, которые получают эту ошибку, ошибка появляется в последней строке перед заключительной точкой с запятой.)

Можете ли вы добавить (желательно небольшой) пример сценария, который не работает? Mark J. Bobak
@ Марк Дж. Бобак: Пожалуйста, смотритеUPDATE выше. rapt

Ваш Ответ

1   ответ
18


В sqlplus пустая строка означает остановку предыдущего оператора и запуск нового.

или вы можете установить пустые строки:

set sqlbl on
Error: User Rate Limit Exceeded rapt
Error: User Rate Limit Exceeded

Похожие вопросы