PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 14/02/2012 18:29:29

mourad
Membre

script pour afficher résultat d'une fonction

Bonjour tout le monde,
j'ai crée la fonction suivante :

CREATE OR REPLACE FUNCTION "mabase"."get_the_results" (varchar) RETURNS "pg_catalog"."refcursor" AS
$body$
DECLARE
  CodeId ALIAS FOR $1;
  curRet REFCURSOR;
  SQL_QUERY varchar;
BEGIN
      SQL_QUERY := 'SELECT sp_code_sq_pk    ,      
             sp_gsp_code_fk   ,     
             A.CDF_NOM        AS STATUT_LABO ,          
             B.CDF_NOM        AS SP_LISTE    ,         
             sp_catc_code_fk  ,    
             sp_ceph_code_fk  ,   
             sp_cge_code_fk   ,     
             sp_pr_code_fk    ,      
             sp_type_spe      ,        
             sp_gref_fk       ,         
             sp_nom           ,           
             sp_nomcomp       ,         
             sp_ph            ,           
             sp_cipucd        ,         
             sp_datecr        ,        
             sp_datemj        ,          
             sp_nl            ,             
             sp_aphp          ,            
             sp_origine_gene  ,    
             sp_nomlong		  ,
             SP_CIPUCD13	  ,
		     SP_MONO_VIRTUELLE AS MONO_VIR      
      FROM   theriaque.SP_SPECIALITE,
             theriaque.CDF_CODIF A, 
             theriaque.CDF_CODIF B
      WHERE  SP_CDF_SLAB_CODE_FK = A.CDF_CODE_PK 
      AND    SP_CDF_LI_CODE_FK   = B.CDF_CODE_PK
      AND    A.CDF_NUMERO_PK     = ''15'' 
      AND    B.CDF_NUMERO_PK     = ''08''
      AND    SP_CODE_SQ_PK = CAST('||CodeId||' AS NUMERIC)';
open curRet FOR execute SQL_QUERY;
RETURN curRet;
end;

et je désire écrire un script qui affiche les résultats retournés par cette fonction. J'ai essayé avec ces lignes

declare resCur CURSOR for select * from get_the_specialite('13183',1,0); 
FETECH ALL in resCur;

mais aucun résultat n'est affiché. Si j'exécute la 1ère ligne seulement j'ai comme résultat le nom de la procédure comme libellé et <unnamed dropal X> comme valeur.
Est ce que quelqu'un pourrait m'éclaircir ce problème et m'aider à le résoudre.
Merci d'avance pour votre aide.
Cordialement.

Hors ligne

#2 14/02/2012 19:33:44

rjuju
Administrateur

Re : script pour afficher résultat d'une fonction

Déjà répondu dans un autre message, mais à tout hasard voila la doc postgresql au sujet du renvoi de refcursor :

http://docs.postgresql.fr/9.1/plpgsql-c … #id5673972

Cette solution impose d'être en transaction, donc un BEGIN explicite.

Dernière modification par rjuju (14/02/2012 19:37:46)

Hors ligne

Pied de page des forums