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 :

code retour proc PL/sql


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier Avatar de venegan
    Inscrit en
    Mars 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut code retour proc PL/sql
    Bonjour , je suis en oracle 8i et j'ai un petit souci :

    J'ai un script shell qui lance plusieurs scripts sql, seulement lors de mon 3eme script j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DECLARE
    *
    ERROR at line 1:
    ORA-20000: ORU-10028: line length overflow, limit of 255 bytes per line
    ORA-06512: at "SYS.DBMS_OUTPUT", line 84
    ORA-06512: at "SYS.DBMS_OUTPUT", line 58
    ORA-06512: at line 111
    et au niveau du (de chaque) script sql je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set serveroutput on
    variable ret_val number
    ...
    DECLARE
    ...
    BEGIN
    dbms_output.ENABLE( 20000 );
    ...
    END;
    /
    exit :ret_val;
    Auriez vous une idée d'ou peut venir l'erreur en sachant que j ai besoin de rediriger ce qui est ecrit vers un fichier de log .

    De plus est ce bien de cette maniere qu on force le code de retour de la procedure avec la valeur :ret_val ?


    Merci de vos reponse ...

  2. #2
    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
    Le message ne peut pas être plus clair. Vous essayez d'afficher avec dbms_output une ligne de plus de 255 caractères.
    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

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Le problème doit venir du fait que tu invoques la méthode en lui passant en argument une chaîne de plus de 255 caractères.
    Or, d'après le message ORA soulevé tu ne peux pas.

    Une solution consisterait à déterminer si l'argument que tu transmets à put_line est >255 caractères et le cas échéant diviser cet appel en autant d'appels tous <255 caractères couplé avec SUBSTR par exemple.

    Qu'en penses-tu ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut Re: ORU-10028 : Line length overflow et code retour proc PL/
    Citation Envoyé par venegan
    Bonjour , je suis en oracle 8i et j'ai un petit souci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    limit of 255 bytes per line
    Hélas, il te faudra attendre 10.2 pour pouvoir afficher de plus longues lignes

    Citation Envoyé par venegan
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    variable ret_val number
    BEGIN
    ret_val := 1;
    END;
    /
    exit :ret_val;
    De plus est ce bien de cette maniere qu on force le code de retour de la procedure avec la valeur :ret_val ?
    une "procedure" ne retourne rien, ni un bloc anonyme. Ce que tu fais ici, c'est quitter sqlplus avec un code de retour de 1 (pour l'OS).

    Citation Envoyé par venegan
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j ai besoin de rediriger ce qui est ecrit vers un fichier de log .
    regarde UTL_FILE ou evtl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SQL> create table log ( c varchar2(4000));
     
    Table created.
     
    SQL> var r refcursor
    SQL> set autop on
    SQL> begin insert into log values ('this is cool...'); commit; open :r for select * from log; end;
      2  /
     
    PL/SQL procedure successfully completed.
     
    C
    --------------------------------------------------------------------------------
    this is cool...
    je n'ai pas testé en 8i. J'espère que ça marche aussi

  5. #5
    Membre régulier Avatar de venegan
    Inscrit en
    Mars 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut
    Merci Magnus, indirectement j'ai eu la réponse à ma question, mais j'ai toujours le souci pour le code de retour de ma procedure.

  6. #6
    Membre régulier Avatar de venegan
    Inscrit en
    Mars 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut
    venegan a écrit:

    Code:

    variable ret_val number
    BEGIN
    ret_val := 1;
    END;
    /
    exit :ret_val;



    De plus est ce bien de cette maniere qu on force le code de retour de la procedure avec la valeur :ret_val ?
    une "procedure" ne retourne rien, ni un bloc anonyme. Ce que tu fais ici, c'est quitter sqlplus avec un code de retour de 1 (pour l'OS).
    C'est bien ce que je veux faire, je veux controler le code de retour du script, en recuperant l exception avec un "when other" et dans ce "catch" mettre :ret_val a une valeur differente de 0, il m'attrape bien l'erreur mais l'exit :ret_val me renvoie 0 ...

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut return code to the os
    Citation Envoyé par venegan
    mettre :ret_val a une valeur differente de 0, il m'attrape bien l'erreur mais l'exit :ret_val me renvoie 0 ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SQL> var ret_val number
    SQL>  begin
      2  select 1/0 into :ret_val from dual;
      3   exception
      4  when others then
      5  :ret_val := 1;
      6  end;
    SQL> exit :ret_val
    lsc@chltlxlsc1:~> echo $?
    1
    os/version?

  8. #8
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  9. #9
    Membre régulier Avatar de venegan
    Inscrit en
    Mars 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut
    Merci pour votre aide, en fait je ne sais pas pourquoi mais quand je fais :ret_val:=8 dans le traitement d'exception l'affectation n'est pa prise en compte et il (le script) retourne 0. Alors que hors du bloc d exception l'affectation a un effet...

    Si quelqu'un a une idée la dessus ...

    Au pire je pense que je fais faire un grep sur les messages renvoyé.

  10. #10
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Qu'as tu géré comme exception ? Es-tu sûr qu'il rentre dans l'exception ? Es-tu sûr également que l'exception ne lève pas une autre erreur oracle ?
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  11. #11
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    un petit set autoprint on va t'aider à débogguer ton code...

Discussions similaires

  1. Code retour SQL*Loader
    Par MoscoBlade dans le forum Oracle
    Réponses: 3
    Dernier message: 20/04/2007, 12h59
  2. gerer les codes retour pl/sql
    Par nadir2 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 27/02/2007, 14h32
  3. Code retour en sortie de proc sql...
    Par milodanlso dans le forum Oracle
    Réponses: 2
    Dernier message: 26/03/2006, 12h27
  4. Code retour SQL server sous centura
    Par MorbidAngel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/09/2005, 14h07
  5. CODE RETOUR GENERE PAR PL/SQL POUR SHELL UNIX
    Par mimi_été dans le forum PL/SQL
    Réponses: 6
    Dernier message: 18/11/2004, 08h32

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