Sono di fronte a un problema molto fastidioso. Ho scritto (in Notepad ++) alcuni script SQL. Ora quando provo a eseguirli tramite SQL * Plus (tramite la riga di comando, su Windows 7), ricevo errori come ORA-00933: SQL command not properly ended
.SQL * Plus non esegue script SQL che SQL Developer fa
Quindi copiare & incollare lo script nella finestra del foglio di lavoro di SQL Developer, premere il pulsante Esegui e lo script viene eseguito senza problemi/errori.
Dopo una lunga indagine, ho iniziato a pensare che SQL * Plus abbia un problema con alcuni spazi bianchi (inclusi i caratteri di nuova riga e le schede) che non capisce.
Poiché presumo che SQL Developer sappia come sbarazzarsi degli strani spazi bianchi, ho provato questo: incollare lo script nella finestra del foglio di lavoro di SQL Developer, quindi copiarlo da lì e incollarlo di nuovo nello script SQL. Questo ha risolto il problema per alcuni file, ma non per tutti i file. Alcuni file continuano a mostrare errori in luoghi senza una ragione apparente.
Hai mai avuto questo problema? Cosa devo fare per essere in grado di eseguire questi script tramite SQL * Plus tramite la riga di comando?
UPDATE:
Un esempio di uno script che non ha funzionato con SQL * Plus, ma ha fatto il lavoro con 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
;
L'errore che ottengo:
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
Come vedi l'errore è (SELECT (LEVEL-1)+0 IS_ACTIVE FROM DUAL CONNECT BY LEVEL<=2) B
(per qualche motivo in tutti i file che ottengono questo errore, l'errore appare sull'ultima riga prima il punto e virgola conclusivo.)
si può aggiungere una (preferibilmente piccolo) esempio di uno script che non funziona? –
@ Mark J. Bobak: vedere ** AGGIORNAMENTO ** sopra. – rapt