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

Bases de données Delphi Discussion :

Procédure stockée avec deux paramètres ADO/ORACLE


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 18
    Points
    18
    Par défaut [Résolu] Procédure stockée avec deux paramètres ADO/ORACLE
    Bonjour,

    J'ai été chargé d'un projet, pour mon stage, où je dois programmer en Delphi et attaquer une base Oracle.

    Je suis arrivé à faire tout ce qu'il me fallait sauf un truc.

    Je n'arrive pas en delphi à appeller une procédure stockée ayant comme paramètres : Un varchar2 en entrée et un Cursor en sortie.

    Les procédures n'ayant qu'un cursor en sortie ne me posent pas de problèmes.

    Voici la procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE  PROCEDURE PROC_TEST 
    (var IN varchar2, oCursor OUT MyPkg.CursorType) AS
    BEGIN
          OPEN oCursor FOR
          SELECT * from MyTable;  
    END;
    J'utilise la chaine d'objets : ADOConnection -> ADODataSet -> DataSource et j'affiche les résultats dans un DBGrid.

    à l'exécution ça me dit:
    Le projet Projet1.exe a provoqué une classe d'exception EOleException avec le message 'ORA-01036:numéro/nom de variable interdit'
    Si quelqu'un sait comment gérer ça.... il y 3 semaines je ne connaissait ni oracle ni delphi.

    Merci


    FRANK

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    (var IN varchar2, oCursor OUT MyPkg.CursorType)
    A mon avis le problème vient du nommage de ta variable, car var est très souvent un mot réservé.
    Et au vu du message d'erreur je pense fortement que cela doit être ca ^^

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Non, le problème ne vient pas de là, j'ai essayé avec d'autres noms de variables et ça me fait la même chose.

    De plus je sais que ma procédure est bonne car je l'exécute sous toad sans dificulté.

    Mais merci quand même

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Ca ne veut rien dire que toad fasse passer la procédure stockée. Car Toad fonctionne avec son moteur de connexion à la base de données et Ado avec le sien.
    Donc il se peut que des choses qui fonctionnent avec Toad ne passe pas avec Ado car il ne les gère pas de la même manière.

    Sinon as tu testé avec un AdoStoredproc au lieu d'utiliser le composant hybride AdoDataset ?

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Oui j'ai essayé avec un ADOStoredProc, le résultat est le même.
    Pense-tu que la syntaxe de ma procédure est correcte?

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par zanifu
    Oui j'ai essayé avec un ADOStoredProc, le résultat est le même.
    Pense-tu que la syntaxe de ma procédure est correcte?
    Je ne connais pas assez Oracle pour te le dire, la il faut mieux que tu ailles sur le forum ORACLE pour demander cela.

    La seul chose qui donne une piste c'est le message d'erreur qui indique que tu utilises un mot réservé et que le pilote Ado refuse d'utilisé contrairement a Toad.

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    J'ai résolu mon problème.

    Le problème ne viens pas du fait que j'utilise un nom de variable réservé mais qu'à l'activation de mon objets DataSet le second paramètre sautait.

    J'ai changé d'objet et j'utilise une chaine dbExpert. ça passe la première fois mais après il faut que je lui redonne les paramètres (qui ont aussi sautés) pour exécuter ma procédure à nouveaux, sinon j'ai le même message d'erreur.

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Bizarre comme comportement car le message d'erreur vient d'Oracle et pas de delphi, car si tu avais un problème de paramètre, delphi te l'aurais dit autrement, genre 'indice hors limite' ou 'paramètre xxxx inconnu'.

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

Discussions similaires

  1. Faire une procédure stockée avec deux tables
    Par mister3957 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/03/2006, 13h54
  2. Procédure stocké avec un ORDER BY paramétrable
    Par Erakis dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 10/11/2005, 14h12
  3. Procédure stockée avec serveur lié et paramètres
    Par AITOZ dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/10/2005, 17h51
  4. Procédure stockée avec param de sortie:marchepas av ADO
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/10/2004, 12h04

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