L3 Info : SGBD
 
◃  Ch. 11 PL/pgSQL  ▹
 

Exécution dynamique de requêtes

  • Exemple :
    CREATE OR REPLACE FUNCTION getProfesseur(idp integer) RETURNS SETOF Professeur AS $$
    BEGIN
       RETURN QUERY SELECT * FROM professeur WHERE prof_id=idp;
    END; $$ LANGUAGE plpgsql;
    
    CREATE OR REPLACE FUNCTION getProfesseurBis(idp integer) RETURNS Professeur  AS $$
    DECLARE
      prof Professeur;
    BEGIN
       EXECUTE 'SELECT * FROM professeur WHERE prof_id=' || idp INTO prof;
       RETURN prof;
    END; $$ LANGUAGE plpgsql;
     
  • Exécution :
    => SELECT getProfesseur(1);
                getprofesseur
    -------------------------------------
     (1,Amanton,Laurent,0232744319,,MCF)
    (1 row)
    
    => SELECT getProfesseurBis(1);
              getprofesseurbis
    -------------------------------------
     (1,Amanton,Laurent,0232744319,,MCF)
    (1 row)