0
votes

Oracle Commande fonctionne dans la base de données mais pas dans SQLPlus

Je tente actuellement de mettre en œuvre un script Bash qui fonctionne à la fin de la journée qui exécute une simple requête Oracle. La commande fonctionne simplement bien en oracle, mais lorsque vous êtes à l'intérieur d'un fichier .sql, il ne fonctionne pas.

J'ai tenté de mettre tout le code sur une ligne et d'ajouter des points-virgules. P>


Contenu du fichier de commandes (avec utilisateur / passe altéré): p> xxx pré>


contenu du fichier SET_CHANGED.SQL: P >

UPDATE ris_web a
SET a.changed = 0
where exists
(
    select modified_date from invn_sbs b
    where b.item_sid = a.item_sid
        and b.modified_date <= sysdate-1
);
COMMIT;
END;


4 commentaires

Obtenez-vous le même message d'erreur lorsque vous utilisez la sortie; au lieu de la fin; ?


Quel est le but du tuyau | dans votre fichier batch? Vous passez la sortie de la commande sortie , donc rien, à l'entrée de SQLPLUS ; Est-ce vraiment ce que vous voulez?


@nébulopathie après avoir remplacé fin; avec sortie; Je voit simplement voir le curseur clignote après qu'il indique "Connecté à: Oracle Base de données 12C Standard Edition version 12.1.0.2.0 - 64 bits de production "


@Aschipfl Ce n'était rien d'important. Je l'ai sorti. C'était juste quelque chose que j'échangeais.


3 Réponses :


0
votes

dans SQLPlus Vous devez utiliser un / CODE> Pour terminer une instruction SQL ou un bloc PL / SQL au lieu d'utiliser un point-virgule, modifiez ainsi votre fichier sur

UPDATE ris_web a
SET a.changed = 0
where exists
(
    select modified_date from invn_sbs b
    where b.item_sid = a.item_sid
        and b.modified_date <= sysdate-1
)
/

SHOW ERRORS
/

COMMIT
/

SHOW ERRORS
/

END


1 commentaires

Salut @bobjarvis. Merci pour votre réponse. Quand j'ai modifié mon fichier set_changed.sql pour correspondre à votre réponse, il est juste de rester sur la ligne de commande. J'ai tenté d'expérimenter votre solution pour tenter de le faire travailler, mais je ne suis toujours pas en mesure de trouver un succès.



0
votes

Vous avez extrémité; à la fin du script mais aucun commence pour cela.

Remplacez simplement l'extrémité ; avec /


3 commentaires

Salut @tejash ---- Ora-00980. Merci pour votre réponse. J'ai essayé de remplacer l'extrémité ; avec / et aussi ajouter un commencer et je n'ai toujours pas réussi à le faire fonctionner.


Non, vous n'avez pas à ajouter commencer . Il suffit de remplacer fin avec /


Droit. J'ai remplacé fin avec / sur ma requête d'origine et il n'a toujours pas fonctionné.



0
votes

La syntaxe d'origine était correcte. Il y avait des changements non engagés dans SQLDEveloper qui causaient le fichier .SQL de ne jamais finir de fonctionner. Merci à tous pour votre aide.


0 commentaires