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

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Points : 168
    Points
    168
    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 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    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 habitué Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Points : 168
    Points
    168
    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 habitué Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Points : 168
    Points
    168
    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 émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    Bonjour,

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

    http://postgresql.developpez.com/faq...kees#appelproc
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Points : 168
    Points
    168
    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...

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Points : 168
    Points
    168
    Par défaut
    je recherche queqlque chose aussi... je sais que çà existe mais je ne rappel plus du nom et de la syntaxe....

    En gros il s'agit d'un argument de condition IF pour savoir si un SELECT à renvoyer une valeur... Je ne sais pas si je suis très claire... mais je n'arrive pas à retrouver l'info

  8. #8
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    je pense que tu parles de FOUND :


    SELECT * FROM matable where id=111;
    IF FOUND THEN
    ...
    END IF;
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

+ 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