IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Execution Script PL/SQL


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut Execution Script PL/SQL
    Bonjour à tous,
    j'essaie de faire un script PL/SQL qui mettrais le nombre de records d'une table dans une variable qui serait utilisée par la suite.
    Voici le contenu de mon fichier test.txt (juste récupération et affichage de la valeur):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE
    	LC$leChamp NUMBER; 
    	Cursor C_Curs Is Select count(*) From maTable; 
    BEGIN 
    	SET SERVEROUTPUT ON;
    	Open C_Curs (); 
    		Fetch C_Curs Into LC$leChamp; 
    		DBMS_OUTPUT.PUT_LINE(LC$leChamp) ; 
    	Close C_Curs ;	
    END ;
    En Sql*Plus je tape: execute c:\monRepertoire\test.txt
    le script ne s'execute pas et je dois faire Ctrl+C pour sortir puis r pour le lancer... :?
    Et la, il m'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ERROR à la ligne 1 :
    ORA-06550: Ligne 5, colonne 6 :
    PL/SQL: ORA-00922: option erronée ou absente
    ORA-06550: Ligne 5, colonne 2 :
    PL/SQL: SQL Statement ignored
    Est-ce que la facon dont j'appelle le script est correct ? est ce que le PL/SQL est executable en SQL*PLUS ? ou encore autre chose ?
    Ca doit être basique mais je ne trouve vraiment pas...
    Si qqun sais m'aider

    Merci
    HH :wink:

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Bonjour et bienvenue,

    Merci de bien vouloir sélectionner OUI dans l'option
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Toujours autoriser le BBCode
    de ton profil pour profiter de ta mise en page (j'ai édité ton message)

    il doit manquer un / à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DECLARE
       LC$leChamp NUMBER;
       Cursor C_Curs Is Select count(*) From maTable;
    BEGIN
       SET SERVEROUTPUT ON;
       Open C_Curs ();
          Fetch C_Curs Into LC$leChamp;
          DBMS_OUTPUT.PUT_LINE(LC$leChamp) ;
       Close C_Curs ;   
    END;
    /
    Mais peut-être qu'une procédure stockée serait plus adaptée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE ma_proc AS
       LC$leChamp NUMBER;
       Cursor C_Curs Is Select count(*) From maTable;
    BEGIN
       SET SERVEROUTPUT ON;
       Open C_Curs ();
          Fetch C_Curs Into LC$leChamp;
          DBMS_OUTPUT.PUT_LINE(LC$leChamp) ;
       Close C_Curs ;   
    END;
    /
    Et sous SQL*Plus :


  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    SET SERVEROUTPUT ON est une commande Sql*Plus non reconnue dans un bloc PL/SQL
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    ha oui, il y a ça aussi

  5. #5
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Et c'est quoi la différence entre et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQl>execute monscript.sql
    ? Le premier exécute du SQL et le 2e du PL/SQL ?
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    non c'est :
    ou

    dans le 1° cas tu exécutes le PL/SQL du fichier dans le 2° tu exécutes le PL/SQL stocké en base via la procedure

  7. #7
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    Merci pour cette réponse si rapide orafrance et SheikYerbouti

    C'est en effet plus pratique en créant une procédure.
    Et SERVEROUPUT ON n'est en effet pas reconnue sous SQL*PLUS.

    Merci ++

  8. #8
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Euh mais dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execute c:\monRepertoire\test.txt
    ne peux pas marcher non ?? C'est peut-être ça son erreur principale, non ?
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  9. #9
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 58
    Points
    58
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ne peux pas marcher non ?? C'est peut-être ça son erreur principale, non ?
    C'était une de mes erreures principales, effectivement !!! J'ai donc remplacé "execute " par "@".

  10. #10
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 134
    Points : 84
    Points
    84
    Par défaut
    non c'est :
    Code:

    @monscript.sql


    ou

    Code:
    execute procedure


    dans le 1° cas tu exécutes le PL/SQL du fichier dans le 2° tu exécutes le PL/SQL stocké en base via la procedure Wink
    Je pensais que "@" et "execute" étaient identique et que call exécute le PL/SQL stocké en base via la procedure ?

    Non ?

  11. #11
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Une chose est sûre, ils ne sont pas identiques... vu comme il me jette quand je tente un execute monfichier.sql ...
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  12. #12
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    @ est suivi d'un fichier alors que execute est suivi d'une procédure

  13. #13
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Citation Envoyé par jokos2000
    Je pensais que "@" et "execute" étaient identique et que call exécute le PL/SQL stocké en base via la procedure ?

    Non ?
    @ et equivalent à start

  14. #14
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 134
    Points : 84
    Points
    84
    Par défaut
    ok !!!!!

    Donc @ == start et execute == call ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. executer scripts sous sql plus livrable
    Par glood1 dans le forum Sql*Plus
    Réponses: 1
    Dernier message: 21/06/2013, 19h48
  2. Execution script PL/SQL à distance
    Par rinuom dans le forum PL/SQL
    Réponses: 8
    Dernier message: 10/07/2008, 08h43
  3. [9i] Executer script depuis SQL+
    Par lbgl dans le forum Oracle
    Réponses: 2
    Dernier message: 23/03/2007, 13h54
  4. [VB6]Executer script sql
    Par issaines dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/04/2006, 17h59
  5. execution partielle d'un script PL/SQL
    Par dyvim dans le forum PL/SQL
    Réponses: 24
    Dernier message: 29/12/2005, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo