PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment FETCH en utilisant la valeur d'une variable Refcursor

Pour nommer le curseur, affectez simplement une chaîne au refcursor variables :

DECLARE
    ref refcursor := ''willi'';

Le portail portera alors ce nom.

Il est important que vous attribuiez le nom avant vous ouvrez le curseur.

Si vous ne voulez pas attribuer le nom, convertissez simplement le résultat de la fonction en text , cela vous donnera le nom du curseur.

Comment utiliser FETCH dépend de l'environnement dans lequel vous l'appelez :

  • Si vous l'appelez depuis SQL, vous devez le faire comme ceci :

    FETCH ALL FROM willi;
    

    Vous devrez construire l'instruction SQL en utilisant le résultat de la fonction, converti en text .

  • Si vous l'appelez depuis PL/pgSQL, vous pouvez utiliser une variable dans le FETCH déclaration, mais vous devez fournir une destination pour le résultat :

    DECLARE
       r refcursor;
       x text;  -- use the correct type
    BEGIN
       r := reffunc2();
       FETCH NEXT FROM r INTO x;
    END;