J'ai un problème à essayer d'exécuter mon script SQL dans Oracle en utilisant SQLPlus. Le script publie simplement des données factices:
sqlplus username/password@server/dbname @Setup.sql
6 Réponses :
Vous devez soit mettre un Si c'est vraiment suspendu, avez-vous été commis ou renvoyé l'exécution du développeur? P> EXIT CODE> à la fin du script, ou exécutez-le comme
nom d'utilisateur / mot de passe SQLPLUS / dbname
<< / code> au lieu de
@ code>). Vous pouvez vérifier si c'est le problème en tapant simplement «sortie» dans la session de suspension. P>
Même sans le Quitter code>, il devrait faire quelque chose i>, c.-à-d. Complete et afficher une invite.
vrai, je cours habituellement avec -s code> quand je fais cette erreur
Ouais désolé de ma faute, c'est la transaction qui n'est pas commue. Première fois que j'ai utilisé Oracle ou l'un de ces outils!
Pour moi, cela semble juste jeter des charges de nombres à l'écran. Toute idée de quoi c'est à propos ?! Ils augmentent fondamentalement jusqu'au numéro de ligne, mais cela les écrit dans une matrice
@Jonnyleeds - Si vous n'avez pas -s code> sur la ligne de commande, vous voyez les numéros de ligne de script. Vous serez laissé à une invite numérotée; Si la touche de frappe génère un nouveau numéro, vous écrivez un bloc PL / SQL, sinon vous obtiendrez une invite
SQL> CODE>. De toute façon, vous ne l'avez pas dit d'exécuter. Vous avez besoin d'un
/ code> sien sur la ligne après la finale de la finale de bloc de bloc code>.
Merci c'est utile de savoir. À ce stade, je devais avoir un comportement différent fonctionnant manuellement de la ligne de commande et une ligne de commande de commande scriptée
Je voyais ce problème aussi avec certains scripts qui exécuteraient bien dans un client comme TOAD, mais lorsqu'il est exécuté via SQLPlus avec la directive @script au lieu de suspendre, le client SQLPlus retournerait une invite à un numéro. qui correspond au nombre de lignes dans le script exécuté (+1). p>
Par exemple, si nous avons exécuté un script nommé «DOIT.SQL» qui comptait 70 lignes, nous démarrerons SQLPlus avec la commande appropriée et entrez: P>
alors nous verrions: p>
Appuyez sur Entrée à ce stade retournerait P>
Nous avons pu obtenir ces scripts exécutés en entrant > @ drawit.sql code> p>
71: code> p>
72: code> p>
/ code> à l'invite et en appuyant sur Entrée. P>
J'avais la similoire, accroché à un numéro, je pouvais incrémenter en appuyant sur Entrée. J'ai redirigé mon script dans ma commande sqlplus, en utilisant << / code> au lieu de
@ code> et le script s'est terminé et renvoyé à l'invite de commande, conformément à la suggestion dans L'article d'Alex-Poole , ci-dessus. Malheureusement, je ne pouvais pas simplement ajouter
Quitter code>, car mon importation a conduit à un certain nombre de scripts tiers, partagés autour de l'entreprise dans notre référentiel de code.
au lieu d'utiliser le / code> à l'invite, assurez-vous que votre requête dans le DOIT.SQL se termine par un point-virgule. P>
Cela aurait dû être un commentaire à la réponse de CLAK, mais il est faux de toute façon; Obtenir les invites de numéro de ligne indique qu'il s'agissait d'un bloc PL / SQL, qui nécessiterait le / code> (ainsi que le
; code>, qui doit déjà être là ou il ne serait toujours pas possible t Travaux).
La réponse simple p>
Assurez-vous de mettre les deux "fin"; et en ligne finale, mettre '/' p>
Il fonctionnera avec facilité. P>
corrigé pour moi.
@ Yoav24 aussi pour moi. Oracle est ... au-delà de l'aggravant.
la ligne de commande mentionnée ci-dessus signifie que à partir du mode interactif ou du script, vous pouvez envoyer le caractère et, bien sûr, vous pouvez rediriger stdin et le prendre à partir du fichier, et non du clavier. Il existe deux manières similaires de faire ceci: p> dans les deux cas sqlplus code> doit exécuter le script
setup.sql code> et attendre des commandes supplémentaires de manière interactive (si Le script ne fait pas
sortie code> explicitement). Ceci est un comportement normal de
sqlplus code>. P>
sqlplus code> se termine dans trois cas: p>
chaque fois que code> plsql-commande) li>
EXIT CODE> (interactif et SRIPT) LI>
^ z code> pour terminer doucement le flux d'entrée. Interactivement, vous appuyez simplement sur
Ctrl + Z, entrez CODE>. P>
sqlplus code> se terminera après l'exécution du script à cause de
eof code > dans le flux d'entrée. p> p>
problème est dû à SQLPlus d'exécuter de la maison Oracle Client Home et qu'il écrut sur la commande de mise à niveau de démarrage. P>
Exécutez le SQLPlus de la maison Oracle non client et essayé les commandes, alors cela fonctionne comme prévu. Donc, la résolution consiste à exécuter le SQLPlus de la maison principale Oracle au lieu d'Oracle Client Home. P>
Que se passe-t-il lorsque vous vous connectez à votre DB via SQLPlus, puis à l'invite, appelez le script?