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

PostgreSQL Discussion :

[Procedure] interroger une fonction.


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Par défaut [Procedure] interroger une fonction.
    Bonjour tout le monde.

    Je souhaiterais savoir s'il est possible d'interroger une procedure via une requete SQL...
    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from <ma_procedure>
    Ou doit-on passer par un trigger..?

    Merci d'avance pour vos réponses !

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 058
    Par défaut
    Ouh là, il y a confusion sur les termes...
    Une procédure et un trigger ne renvoient pas d'informations.
    C'est une fonction qui fait ça. Donc, ta synthaxe est correcte pour une fonction.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre éclairé Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Par défaut
    Oui, je me suis un peu mélangé les pinceaux....
    J'ai réussit à interroger ma fonction, mais par contre je n'arrive pas à à insérer le résultat de ma requête dans mon objet ROW...

    Si tu as une idée sur la question... Voici mon morceau de code test:

    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
     
    requete text;
    row ht_tradlibellefenetre%ROWTYPE;		
     
    BEGIN
    	requete:= 'SELECT INTO ' || row || ' lfe_lib_s FROM ht_tradlibellefenetre';
    	requete := requete || ' INNER JOIN hp_libellefenetre ON lfe_id = tlfe_lfe_k ';
    	requete := requete || ' AND lfe_cod_s = ' || quote_literal(code);
     
    	IF isActive = 'Y' THEN
    			requete := requete || ' AND lfe_isactive = ' || quote_literal('Y');
    	END IF;
    	IF restriction <> 'none' THEN
    		requete := requete || ' AND lfe_fen_k = ' || quote_literal(fen_id);
    		requete := requete || ' AND lfe_gpf_k = ' || quote_literal(gpf_id);
    	END IF;
     
    	EXECUTE requete;
    Je cherche ardemment le problème mais sans succés... j'ai cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ERROR: could not find array type for data type ht_tradlibellefenetre
    État SQL :42704
    Contexte : SQL statement "SELECT  'SELECT INTO ' ||  $1  || ' lfe_lib_s FROM ht_tradlibellefenetre'"
    PL/pgSQL function "hpt_tradlibellefenetre" line 13 at assignment
    J'avais précédemment essayer avec une variable de type "record" mais une erruer venait se glilsser... le code était le même, seul la déclaration de type de row était différente (maintenant ht_tradlibellefenetre%ROWTYPE avant record)

    En tous cas, merci de ton aide.

  4. #4
    Membre éclairé Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Par défaut
    En fait j'ai un autre soucis plus... gênant...
    Ma requête ne s'execute pas en fait... j'ai un zoli message d'errur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ERROR: cannot EXECUTE a null querystring
    État SQL :22004
    Contexte : PL/pgSQL function "hpt_tradlibellefenetre" line 25 at execute statement
    Donc si je comprend bien... pour lui ma chaine qui contient ma requête n'est pas une requête...
    Je pensais pouvoir faire celà comme çà mais apparemment ... Non !

    EDIT: Le problème vient de ma variable row ! Si je l'enlève ma requête contient de nouveau quelque chose....

  5. #5
    Membre Expert
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Par défaut
    Bonjour,

    pour le select * from <mafonction> tu peux regarder ici :

    http://postgresql.developpez.com/faq...kees#appelproc

  6. #6
    Membre éclairé Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Par défaut
    Merci beaucoup j'arrive à interroger ma fonction... Mais celle-ci ne veut pas exécuter ma requête....

    Pourtant quant je lui demande de me retourner la chaîne de caractères, la requête est bonne ! Seulement et seulement si j'enlève ma clause 'INTO' et ma variable de type %ROW...

    je sens que je touche au but mais là je suis un peu dans le brouillard.... allez ! je vais manger ! les frites portent conseil...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/02/2007, 06h30
  2. Créer dynamiquement une fonction dans une procedure
    Par cbon1 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/10/2006, 10h29
  3. [procedures] définir une fonction
    Par Aquaphobe dans le forum DB2
    Réponses: 4
    Dernier message: 05/10/2006, 08h05
  4. Comment declarer une fonction ou procedure globale
    Par manubrard dans le forum Langage
    Réponses: 8
    Dernier message: 21/02/2006, 14h21
  5. Utilisation d'une fonction dans une procedure
    Par MaxiMax dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/08/2005, 15h51

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