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

SQL Oracle Discussion :

Methodes qui compile avec avertissements


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut Methodes qui compile avec avertissements
    Bonjour, je suis sur un projet pour mes études, on doit créer une base de donnée pour une société de location de DVD (genre cinébank).

    On doit faire ça en objet sous Oracle, voici le sujet.

    Pour le moment j'ai réussi à créer tous les types et les tables dont j'ai besoin : fichier types + tables.

    Reste les méthodes associées à ces types, et la c'est moins fun tout de suite !
    J'ai commencé par créer quelques méthodes pour le type adherent, et la compilation ne marche pas bien :

    Warning: exécution terminée avec avertissement
    type body Compilé.
    .

    Première question : comment on fait pour avoir plus de précision sur l'avertissement (show err n'affiche rien) ?

    En testant le createAdherent avec cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select s.createAdherent('enrico','abricot',t_adresse('10',' rue des champs', '80000', 'Amiens'),'0303030303') from adherents s;
    J'ai ça :
    Erreur commençant à la ligne 1 de la commande :
    select s.createAdherent('enrico','abricot',t_adresse('10',' rue des champs', '80000', 'Amiens'),'0303030303') from adherents s
    Erreur à la ligne de commande : 1, colonne : 7
    Rapport d'erreur :
    Erreur SQL : ORA-06553: PLS-587: une méthode statique ne peut pas être appelée sur une valeur d'instance
    06553. 00000 - "PLS-%s: %s"
    *Cause:
    *Action:
    C'est quoi le problème ?

    Merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    Je vois deux corrections à apporter:
    - remplacer "select sysdate from dual" par "sysdate" dans l'insert

    - "categorie = getCategorie();" par "categorie := getCategorie();" (il manque ':')

    Ensuite, je ne vois pas pourquoi "show err" ne t'affiche rien.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    J'ai apporté les 2 modifications (: pour l'affectation et sysdate), et j'ai toujours l'avertissement.

    Y'a pas une option genre Set quelquechose pour afficher les erreurs directement sans être oblige de taper show err; à chaque fois (surtout que ça marche toujours pas show err).

  4. #4
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Par défaut
    As-tu activé l'affichage : ?

    De plus pour une fonction, il faut obligatoirement un retour et là rien... donc soit tu passes par une procédure soit tu donnes un retour à ta fonction.

    Pourquoi tu n'utilises pas une séquence pour créer ton idClient dans la table adherents ? ça t'éviterai de faire un max sur la table qui prendra beaucoup de temps quand elle aura plein de données.
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    Les erreurs de fonctions/procedure sont corrigés, mais j'ai toujours des avertissement.

    En activant SERVEROUTPUT ça n'affiche pas les erreurs qui emêchent la compilation des méthodes.

    Et ma requête de test de createAdherent ne fonctionne toujours pas

    (j'ai mis à jours les fichiers sur le ftp)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Galdon Voir le message
    Et ma requête de test de createAdherent ne fonctionne toujours pas
    Normal, c'est une procédure que tu mets dans une requête, ça ne peut pas marcher !
    La requête attend une valeur...
    Tu dois passer par un curseur si tu veux faire ça sur toute ta table en passant par une procédure...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    J'ai oublié de donner l'erreur qu'il me donne lors de l'appel de createAdherent :

    Erreur commençant à la ligne 1 de la commande :
    select s.createAdherent('enrico','abricot',t_adresse('10',' rue des champs', '80000', 'Amiens'),'0303030303') from adherents s
    Erreur à la ligne de commande : 1, colonne : 7
    Rapport d'erreur :
    Erreur SQL : ORA-06553: PLS-222: la fonction nommée 'CREATEADHERENT' n'existe pas dans cette étendue
    06553. 00000 - "PLS-%s: %s"
    *Cause:
    *Action:
    C'est quoi la syntaxe pour appeller ma procedure createAdherent ?

    Il faut un curseur pour ça ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Pour tester une procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    begin
    s.createAdherent('enrico','abricot',t_adresse('10',' rue des champs', '80000', 'Amiens'),'0303030303') ;
    end;

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    Oui mais il connaît pas s.

    Ceci ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    begin
    t_adherent.createAdherent('enrico','abricot',t_adresse('10',' rue des champs', '80000', 'Amiens'),'0303030303') ;
    end;
    Désolé pour mes question basiques, mais quand on débute dans un domaine y'a pleins de trucs qui sont pas évidents.

    Ensuite, quand on progresse, on acquiert des automatisme, comme des évidences. Mais ce genre de petites choses : appeller une procedure... c'est pas encore évident pour moi .

  10. #10
    Invité
    Invité(e)
    Par défaut
    tu peux aussi retourner à la source :
    http://sheikyerbouti.developpez.com/...age=Chap4#L4.1

    Quant au "ça ne marche pas", ça va m'être difficile de deviner l'erreur avec un message aussi sibyllin.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/03/2012, 12h24
  2. compilation avec une methode de tableaux en parametre
    Par stephcast dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 12/09/2009, 23h46
  3. [PL/SQL]Procédure qui se compile avec des erreurs
    Par yoann7 dans le forum PL/SQL
    Réponses: 12
    Dernier message: 17/03/2009, 11h09
  4. Réponses: 4
    Dernier message: 28/05/2008, 19h31

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