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 :

Collection dans corps de message


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut Collection dans corps de message
    je transfert mon message depuis le sous forum admin...

    J'ai besoin de faire tourner une procédure, qui va régulièrement me donner des nouvelles de ma (mes) base (s), frequemment modifiée(s) par des intervenants sans scrupules (mes collègues )

    Comme je suis pas une lumière en PL/SQL, j'ai évidemment un problème que je ne comprend pas; j'ai entre autre dans le code un curseur qui me liste une collection de contraintes désactivées, que je place dans un type défini.

    Sauf que ce type défini, je ne sais pas le ressortir pour que ma liste s'intègre dans le corps de mon message...

    Voilà le code. La variable de mon type s'appelle "mescontraintes", et lorsque j'essaie de l'utiliser, ma procédure plante (ligne 53)

    Comment fait-on ??


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    CREATE OR REPLACE PROCEDUREsys_control 
    IS
     
    -- Procédure controle BASE , envoi par mail--
    TYPE tableau_contraintes IS TABLE OF VARCHAR2(150);
     
    jobs81 varchar2(70);
    jobs42 varchar2(70);
    jobs2 varchar2(70);
    corps varchar2(9000);
    mescontraintes tableau_contraintes;
    objet varchar2(20) := 'controle BD PROD';
    mail1 varchar2(40) := '<moi@mapomme.fr>';
    de varchar2(40) := '<moi@mapomme.fr>';
     
    Cursor C_con
    IS
    select constraint_name || '/ ' || table_name "contraintes_desactivees"
    from user_constraints  where status like 'DISABLED';
     
     
    BEGIN
     
     open C_con;
        fetch C_con bulk collect into mescontraintes;
        Close C_con;
     
     
    select decode(broken,'N','okay' || ' [ ' || next_date || ' ]','planté !!!!!') 
    --|| what || '(' ||  job || ')' || ' --> ' || next_date || ' -midi' 
    into jobs81 from DBA_JOBS where job = 81; 
     
    select decode(broken,'N','okay' || ' [ ' || next_date || ' ]','planté !!!!!') 
    --|| what || '(' ||  job || ')' || ' --> ' || next_date  
    into jobs42 from DBA_JOBS where job = 42; 
     
    select decode(broken,'N','okay' || ' [ ' || next_date || ' ]','planté !!!!!') 
    --|| what || '(' ||  job || ')' || ' --> ' || next_date  
    into jobs2 from DBA_JOBS where job = 2; 
     
    corps := '<?xml version="1.0" encoding="iso-8859-15"?>' 
               || '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'
             || '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">'
               || '<head>'
             || '</head>'
             || '<body>'
               || sysdate || '<br/>'
              || 'JOBS (N°) : état & prochaine exécution ' || '<br/>'
             || 'DBMS_STATS_GATHER_SCHEMA_STATS(USRIHF)   (2) : ' || jobs2 || '<br/>'
             || 'mise à jour des FOREIGN KEYS (42) : ' || jobs42 || '<br/>'
             || 'mise à jour des comptes midi (81) : ' || jobs81 || '<br/>'
             || '<br/>'
         --    || 'CONTRAINTES DESACTIVEES ' ||  mescontraintes     || '<br/>'
             || '<br/>'
             || '</body>'
             || '</html>' ;
     
            send_mail_4(de,mail1,objet,corps);
     
     
     
     
    EXCEPTION
       WHEN OTHERS
       THEN
          RAISE;
     
     
    END sys_control;
    /

  2. #2
    Expert confirmé
    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
    Par défaut
    et lorsque j'essaie de l'utiliser, ma procédure plante (ligne 57)
    Ah oui, et il faut compter les lignes et deviner l'erreur ?

  3. #3
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut
    hum...
    c'est la seule ligne en commentaire dans le corps du message, là où j'ai écrit en majuscule "CONTRAINTE DESACTIVEES".

    Pas besoin de deviner l'erreur, je l'explique assez clairement, non ? Ce que je ne sais pas, c'est résoudre le problème.

    Je suis pas doué, hein ?

  4. #4
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    en fait ta procedure renvoie un message ORA --
    PLS --

    peux tu nous envoyer la ligne qui correspond STP ?

  5. #5
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par olivanto Voir le message
    hum...
    c'est la seule ligne en commentaire dans le corps du message, là où j'ai écrit en majuscule "CONTRAINTE DESACTIVEES".
    ça fait beaucoup de chose à deviner.

    Citation Envoyé par olivanto Voir le message
    Pas besoin de deviner l'erreur, je l'explique assez clairement, non ?
    Effectivement, votre explication se résume à : "ça plante"

    Si vous voulez que l'on vous aide, prenez au moins la peine de donner l'erreur exacte. On n'a pas que ça à faire...

  6. #6
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut
    en effet. Je suis pas clair. Je suis dessus depuis plusieurs heures et cela me paraît évident...dsl!

    En fait, lorsque je compile ma fonction telle quelle, avec cette fameuse ligne en commentaire, elle fonctionne très bien, excepté bien sûr l'élément se rapportant à cette ligne. Je reçois bien mon mail, et tout et tout.

    Quand je passe cette ligne "en actif", j'ai cette erreur ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (27;10) ligne de début de corps
    Oracle Error PLS-00306 ; numéro ou type d'argument érroné dans appel à '||'
    Je suppose donc que mon "objet" nommé mescontraintes est foireux à cet endroit, mais je ne sais pas comment l'utiliser dans ce genre de cas...

    Suis je plus clair (où tout du moins, moins ténébreux) ?
    PS :
    Je remets le code, avec uniquement ce qui nous concerne et ne fonctionne pas.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    CREATE OR REPLACE PROCEDURE sys_control 
    IS
     
    -- Procédure controle BASE , envoi par mail--
    TYPE tableau_contraintes IS TABLE OF VARCHAR2(150);
     
    mescontraintes tableau_contraintes;
     
    corps varchar2(9000);
    objet varchar2(20) := 'controle BD PROD';
    mail1 varchar2(40) := '<moi@mapomme.fr>';
    de varchar2(40) := '<moi@mapomme.fr>';
     
    Cursor C_con
    IS
    SELECT constraint_name || '/ ' || table_name "contraintes_desactivees"
    FROM user_constraints  WHERE STATUS LIKE 'DISABLED';
     
     
    BEGIN
     
     open C_con;
        fetch C_con bulk collect INTO mescontraintes;
        Close C_con;
     
     corps := '<?xml version="1.0" encoding="iso-8859-15"?>' 
               || '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'
             || '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">'
               || '<head>'
             || '</head>'
             || '<body>'
             || 'CONTRAINTES DESACTIVEES ' ||  mescontraintes     || '<br/>'
             || '<br/>'
             || '</body>'
             || '</html>' ;
     
            send_mail_4(de,mail1,objet,corps);
     
       EXCEPTION
       WHEN OTHERS
       THEN
          RAISE;
     
     END sys_control;

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut
    Ton objet "mescontraintes" est un tableau.
    Or l'opérateur || ne sait concaténer que des strings.
    C'est un peu comme si tu écrivais "i := 3 + toto"

    Quand il s'agit par exemple d'un entier, on a une conversion implicite en string. Mais pour un tableau il n'y en a pas.

    Il faut te créer une fonction toString(tableau_contraintes), qui va lire successivement les lignes du tableau et renvoyer une string résultant de la concaténation de toutes ces lignes. Puis remplacer ta ligne
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    || toString(mescontraintes) ||

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

Discussions similaires

  1. Intégrer vidéo dans corps de message.
    Par PoA61 dans le forum Thunderbird
    Réponses: 0
    Dernier message: 06/11/2013, 09h57
  2. [OL-2007] Créer lien hypertexte dans corps de message reçu
    Par inc002 dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 07/08/2009, 14h47
  3. [OL-2003] intégrer fichier HTML dans corps du message
    Par DBane dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 17/04/2009, 16h07
  4. Récupérer adresses mails dans corps de message
    Par aztecq dans le forum VBA Outlook
    Réponses: 5
    Dernier message: 09/04/2009, 10h10
  5. Texte dans corps du message non lisible
    Par Lorenzole+bo dans le forum Outlook
    Réponses: 3
    Dernier message: 07/12/2008, 12h09

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