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 :

Création procédure


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut Création procédure
    bonjour

    j'ai un probleme avec la creation d'une procedure avec Sql sous oracle 10g, franchement je comprend pas il est ou le probleme voila ce que j'ai fait :
    une procedure la plus simple possible :

    code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE or replace PROCEDURE testeAPI IS 
    BEGIN
    select * from gamme_piece;
    END;
    /
    alors il créée la procédure mais avec une erreur de compilation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Avertissement : Procédure créée avec erreurs de compilation.
    et quand je veux executé ma procedure j'ai cette erreur là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> execute testeAPI;
    BEGIN testeAPI; END;
     
          *
    ERREUR à la ligne 1 :
    ORA-06550: Ligne 1, colonne 7 :
    PLS-00905: l'objet BTPI.TESTEAPI n'est pas valide
    ORA-06550: Ligne 1, colonne 7 :
    PL/SQL: Statement ignored

    si qu'elle qu'un peut me dire il est ou le probleme ça serai vraiment sympa

    merci pour votre aide d'avance.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    On ne peut pas mettre de requête comme ça dans un bloc PL.
    Vous pouvez par contre écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE OR REPLACE PROCEDURE testeAPI IS 
    BEGIN
        EXECUTE IMMEDIATE 'SELECT * FROM gamme_piece';
    END;
    /
    Mais soyez conscient qu'en l'état ça ne sert à rien, puisqu'il n'y ni action ni affichage qui soit demandé.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    ahhh ok merci bcp pour votre réponse

    mais enfaite pourquoi en voie pas le résultat de la requette Select ?? est ce que y a une instruction pour demander l'affichage du resultat a l'écrant,

    enfaite moi j'aurai besoin de cette procédure pour le moment juste pour faire des testes d'appel a cette procedure apres je vais créer une autre procédure pour faire des changements sur la base de données.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Oui tout à fait, il faut utiliser le package SYS.DBMS_OUTPUT pour faire de l'affichage !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Oui tout à fait, il faut utiliser le package SYS.DBMS_OUTPUT pour faire de l'affichage !
    c'est pas trop claire pour le package SYS.DBMS_OUTPUT je le connais pas !!

    Stp est ce que tu peut me dire comment l'utilisé dans la procédure précedente pour avoir l'affichage.!!!!

    merci

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BEGIN
        dbms_output.put_line('Hello world');
        dbms_output.put_line('Il est ' || to_char(sysdate, 'hh24:mi'));
    END;

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    ok merci bcp pour votre réponse

    enfaite au début ça ma fait peur elle affiché rien mais enfaite il manqué de mettre :
    SET SERVEROUTPUT ON [OFF par défaut].

    merci bcp ça va m'aide pour faire mes teste.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    j'ai encore un petit probleme enfaite quand j'éxecute ma procedure sur Sqlplus elle m'affiche bien le résultat attendue, mais quand j'appel ma procedure apartir d'un programme java j'ai aucun affichage sur la console !!!!! malgré que la procedure s'éxécute bien.

    donc je veux savoir comment faire pour récupérer l'affichage sur la console??

    merci pour votre aide .

  9. #9
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Bonjour,

    DBMS_OUTPUT est un package qui permet de renvoyer des données à l'écran.

    Pour récupérer des données dans un programme, il ne faut pas faire une procédure mais une fonction qui renverra un curseur : à partir de là, votre code Java fera appel à cette fonction et vous pourrez ensuite manipuler le curseur de votre programme Java.
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    merci pour ta réponse

    mais le probleme c'est que je suis obliger de faire une procédure, mais avec une procedure je peut faire un return aussi je pense ?!!!

    voila ce que j'ai fait moi un truc vraiment simple mais il dit que j'ai une érreur !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE PROCEDURE testeAPI IS
    RETURN NUMBER
    BEGIN
        return(1);
    END;
    /
    mais je vois pas ou allé l'erreur!!!!! c'est trop dur le debug avec les procedures on a aucune information

    merci

  11. #11
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 955
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 955
    Par défaut
    Salut,
    Une procédure avec un return ça s'appelle une fonction

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Salut,
    Une procédure avec un return ça s'appelle une fonction
    ahh ok merci
    ben tampi donc je vais utilisé une fonction

    merci comme meme

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/05/2008, 20h47
  2. création procédure stockée
    Par Alex35 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 17/10/2007, 13h16
  3. création procédure stocké
    Par morados dans le forum C#
    Réponses: 2
    Dernier message: 23/07/2007, 09h48
  4. Problème Création Procédure
    Par Yndigos dans le forum Oracle
    Réponses: 6
    Dernier message: 08/07/2006, 09h02
  5. [db2][Procedure]Pb de création procédure
    Par yoyopi dans le forum DB2
    Réponses: 1
    Dernier message: 28/04/2006, 15h11

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