Curseurs PostgreSQL
Je suis en train d'apprendre les rudiments de curseurs l'utilisation de PostgreSQL. C'est mon script:
DECLARE cur_employees CURSOR FOR
SELECT *
FROM employee
CLOSE cur_employees
Je veux parcourir la liste et de sortie de ceux qui sont actifs. Où dois-je commencer?
source d'informationauteur Karl
Vous devez vous connecter pour publier un commentaire.
Vous très rarement explicitement l'utilisation de curseurs dans PostgreSQL, même lors du traitement des résultats de la requête dans plpgsql. C'est un contraste marqué avec de nombreuses autres bases de données SQL où ils sont utilisés presque tout le temps.
En plpgsql, il vous suffit d'écrire quelque chose comme:
Ci-dessus, le langage plpgsql gestionnaire traite de l'ouverture, de liaison, de l'extraction et de la fermeture de lui-même (plus sur les déclarationset les structures de contrôle).
Avec PostgreSQL à partir de la version 9.0, vous pouvez simplement déposer dans l'exécution de plpgsql à l'aide d'un "FAIRE" bloquer. Pour les versions antérieures, vous devez créer une fonction et sélectionnez-la. Si vous êtes à la recherche pour le PostgreSQL équivalent, par exemple, le parcours d'un résultat avec un curseur sur SQL Server, c'est ce qu'il est. Notez que itération etc. sont pas partie du dialecte SQL, seule une partie de plpgsql (ou l'une de l'autre emebedded langues).
La "DECLARE CURSOR xxx" syntaxe SQL niveau peut être utilisée comme ceci:
Ceci peut être utilisé pour soigneusement obtenir qu'une partie de l'ensemble de résultats de requête. Cependant, il est rare de les utiliser, car, généralement, votre pilote client fournira une sorte de fonctionnalité pour ce faire (par exemple, défilement des ensembles de résultats dans JDBC). Vous pouvez également retourner les curseurs de fonctions similaires à celles d'Oracle, même si encore une fois c'est un relativement rares cas d'utilisation.
Généralement, on a une DÉCLARER pour le curseur, puis une ouverture du curseur (qui matérialise l'ensemble des résultats), de multiples opérations de récupération pour récupérer les lignes du jeu de résultats individuellement, et puis on n'a PROXIMITÉ du curseur.
Vous semblez avoir une DÉCLARER suivie par un PROCHE. C'est ainsi que votre erreur de syntaxe, comme vous ne l'avez jamais fait une OUVERT.