Récupération des lignes à partir d'un curseur PostgreSQL

J'ai le curseur de code:

BEGIN;
DECLARE cliente_cursor 
CURSOR FOR SELECT * FROM cliente;

Je veux lire tout le contenu de la Table 'cliente':

Récupération des lignes à partir d'un curseur PostgreSQL

Avec l'utilisation d'un curseur.
J'ai le code de travail pour SQL Server:

DECLARE cliente_cursor CURSOR
      FOR SELECT * FROM cliente
OPEN cliente_cursor
FETCH NEXT FROM cliente_cursor;
While @@FETCH_STATUS=0
BEGIN
     FETCH NEXT FROM cliente_cursor;
End
CLOSE cliente_cursor
DEALLOCATE cliente_cursor

Et je veux avoir un code qui fonctionne pour PostgreSQL.

J'ai été à la recherche d'une solution & vu que les gens suggèrent l'aide de fonctions. Je me demande si il n'y a aucune manière dans cette SGBD PostgreSQL pour créer quelque chose de similaire pour le code de SQL Server.

J'avais écrit ce code:

CREATE OR REPLACE FUNCTION MyFunction()
RETURNS setof cliente AS $$
DECLARE 
cursor_cliente CURSOR FOR SELECT * FROM cliente;
rec cliente%ROWTYPE;
 BEGIN
 OPEN cursor_cliente;
loop
--fetch the table row inside the loop
FETCH cursor_cliente INTO rec;
-- check if there is no record
   --exit from loop when record not found
   if not found then
        exit ;
   end if;
end loop;
RETURN;
END;
$$ LANGUAGE plpgsql;

Mais quand je le lance, je ne reçois:

select MyFunction();

Une idée de ce que le code devrait-il être à la place?

Récupération des lignes à partir d'un curseur PostgreSQL

Toute aide serait appréciée beaucoup!

  • Je ne vois pas comment ce que vous voulez diffère de SELECT * FROM cliente; il est peut-être parce que je n'ai pas usderstand ms-sql-server
  • C'est en fait la même. Avec la différence, je veux de la table pour être montré à l'aide d'un curseur.
  • l'utilisation d'une boucle for puis.
  • pourquoi voulez-vous utiliser un curseur? tous qu'il va faire est de ralentir la requête vers le bas. inline plpgsql s'exécute dans une transaction de même que plpgsql fonctions.
  • Comment puis-je utiliser la boucle @Jasen ? Merci pour votre réponse. Je dois utiliser des curseurs en PLPGSQL à faire la même chose que le serveur SQL bloc de phrases
InformationsquelleAutor Mike Pérez | 2015-01-18