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

SGBD Perl Discussion :

[sgbd] Probleme DBI, procedure stockée de type "SELECT"


Sujet :

SGBD Perl

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [sgbd] Probleme DBI, procedure stockée de type "SELECT"
    Ma procedure stockée (Mysql 5)

    PROCEDURE `TEST`()
    BEGIN
    SELECT * FROM TABLE;
    END$$


    --- Perl ---
    $sth = $dbh->prepare("CALL TEST()");
    $sth->execute;


    >> Message d'erreur à l'éxecution : PROCEDURE TEST can't return a result set in the given context...

    Je ne comprend pas car un $dbh->prepare("SELECT * FROM TABLE"); marche, et l'utilisation de procedure stockée de type INSERT ou DELETE (pas de retour) fonctionne correctement.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut [sgbd] Problème DBI,...
    Voilà par exemple ce que j'ai fait.

    J'utilise un PC sous Windows 98 ou XP, Perl 5.6, DBI, DBD:Oracle. Les bases accédées sont Oracle mais cela doit être du même tonneau que toi parce que nous passons par DBI.
    L'objectif est de décoder des adresses pour qu'elles soient lisibles par le facteur.
    La procédure stockée et une méthode d'appel avec paramètres s'appelle: e01c013.ligne_six
    A l'ouverture de la base, je prépare pour le passage des paramètres.
    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
     
    $f_ligne_six_4 =  $dbh2->prepare(q{
                                                BEGIN
                                                    e01c013.ligne_six
                                                    (
                                                        :v_dir,
                                                        :v_com,
                                                        :v_voie,
                                                        :v_numvoie,
                                                        :v_ligne6,
                                                        :code_retour
                                                    );
                                                END;
                                            }
                                    )|| die qq{Preparation appel 'ligne_six' impossible: $dbh2->errstr\n};
    Pour récupérer un enregistrement de la base, je stocke dans une table hash via une référence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $adretb_ref;                     # référence sur un enregistrement adresse
    Dans l'itération de recherche, le lie les paramètres et j'execute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    eval {
                    $f_ligne_six_4->bind_param(":v_dir",$adretb_ref->{DIR});
                    $f_ligne_six_4->bind_param(":v_com",$adretb_ref->{COM});
                    $f_ligne_six_4->bind_param(":v_voie",$adretb_ref->{VOIE});
                    $f_ligne_six_4->bind_param(":v_numvoie",$adretb_ref->{NUMVOIE});
                    $f_ligne_six_4->bind_param_inout(":v_ligne6",\$ligne6, 40);
                    $f_ligne_six_4->bind_param_inout(":code_retour",\$coderetourTOPAD,4);
                    $code_retour_package_e01c013 = $f_ligne_six_4->execute;
                 };
    Et j'ai récupéré ainsi mes données dans $ligne6.

Discussions similaires

  1. [2008] Procedure stockée parcourir le resultat d'un select
    Par olibara dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 16/09/2013, 19h31
  2. probleme avec procedure stockée
    Par tilily dans le forum C#
    Réponses: 3
    Dernier message: 16/01/2012, 20h46
  3. Probleme avec Procedure stockée
    Par log528 dans le forum Développement
    Réponses: 1
    Dernier message: 18/05/2008, 16h14
  4. Probleme de procedure stockée
    Par Evenmor dans le forum SQL
    Réponses: 4
    Dernier message: 07/05/2008, 14h10
  5. problemes avec procedures stockée
    Par nah_wah dans le forum SQL
    Réponses: 3
    Dernier message: 22/02/2007, 12h15

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