SQL*Plus de ne pas exécuter les scripts SQL SQL Developer n'
Je suis confronté à un très ennuyeux problème. J'ai écrit (dans Notepad++) des scripts SQL. Maintenant quand j'essaye de les exécuter par SQL*Plus (par le biais de la ligne de commande sur Windows 7), j'obtiens des erreurs comme ORA-00933: SQL command not properly ended
.
Puis-je copier & collez le script dans le SQL Developer fenêtre de feuille de calcul, cliquez le bouton Exécuter, et le script s'exécute sans aucun problème/erreurs.
Après une longue enquête, j'en suis venu à penser que SQL*Plus a un problème avec certains espaces (y compris les caractères de saut de ligne et les tabulations) qu'il ne comprend pas.
Car je suppose que SQL Developer sait comment se débarrasser de l'étrange espaces, j'ai essayé ceci: collez le script dans le SQL Developer fenêtre de feuille de calcul, puis copiez-le et collez-le dans le script SQL. Qui a résolu le problème pour certains fichiers, mais pas tous les fichiers. Certains fichiers montre des erreurs dans des endroits sans aucune raison apparente.
Avez-vous déjà eu ce problème? Que dois-je faire pour être en mesure d'exécuter ces scripts SQL*Plus, par le biais de la ligne de commande?
Mise à JOUR:
Un exemple de script qui ne fonctionne pas avec SQL*Plus, mais a fait un travail avec 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'erreur que je reçois:
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
Comme vous le voyez l'erreur est sur (SELECT (LEVEL-1)+0 IS_ACTIVE FROM DUAL CONNECT BY LEVEL<=2) B
(pour quelque raison dans tous les fichiers que vous obtenez cette erreur, l'erreur s'affiche sur la dernière ligne avant la conclusion d'un point-virgule.)
J. Bobak: Veuillez consulter la mise à JOUR ci-dessus.
OriginalL'auteur rapt | 2012-05-02
Vous devez vous connecter pour publier un commentaire.
Supprimer les lignes vides.
Dans sqlplus une ligne vide signifie cesser de déclaration précédente et en commencer une nouvelle.
ou vous pouvez définir des lignes vides:
Alléluia!!! Vous avez sauvé ma journée! Vous avez frappé le clou sur la tête. Merci beaucoup!
OriginalL'auteur A.B.Cade