|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : octobre 2008 Messages : 124 ![]() |
Bonjour à tous,
Là je tourne en rond et je ne sais plus quoi faire, c'est pourquoi je me tourne vers vous pour vos idées et remarques pertinentes. J'ai récupéré un DUMP comportant tables, données et fonctions. Je souhaiterai pouvoir utiliser ces fonctions, mais je n'ai pas réussi après moult essais (sous phppgadmin, pgadmin, psql en ligne de commandes...). Voici un exemple de l'une de ces fonctions : Code :
Je ne suis pas du tout habitué à PostgreSQL et à ces curseurs. Merci par avance pour toutes les pistes que vous pourrez me donner. Une fois le processus compris j'aimerai accéder à ces fonctions depuis du code PHP, si possible après une connexion via PDO. Cordialement, Thec |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Voir ici pour un exemple d'exploitation de refcursor en php:
http://www.developpez.net/forums/d88...ray-refcursor/ |
|
|
10
|
|
|
#3 | ||
|
Membre régulier
![]() Inscription : octobre 2008 Messages : 124 ![]() |
Bonjour,
Merci pour ces précisions, j'ai réussi à accéder à la fonction de l'API depuis PHP, grâce aux informations contenues dans ce post : http://www.developpez.net/forums/d88...r/#post5033039 Cependant, j'aimerai beaucoup pouvoir exécuter la requête en ligne de commande directement depuis psql ; à priori il faut forcément être en transaction (begin; commit Code :
En vous remerciant par avance, Thec |
||
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Il faut être dans une transaction effectivement pour que le curseur reste ouvert.
Ensuite le refcursor est identifié par un nom qui est généré par sa création. Exemple
test=> select * from fcurs();
fcurs
--------------------
<unnamed portal 1>
(1 row)
Exemple :
test=> fetch 5 in "<unnamed portal 1>";
table_name
--------------------------
user_mappings
tables
triggered_update_columns
triggers
usage_privileges
(5 rows)
test=> close "<unnamed portal 1>";
CLOSE CURSOR
|
|
|
10
|
|
|
#5 |
|
Membre régulier
![]() Inscription : octobre 2008 Messages : 124 ![]() |
Merci beaucoup, ça fonctionne parfaitement !
J'aimerai juste encore aller un peu plus loin. Comment depuis ma ligne de commande je peux exécuter du plpgsql (j'ai le langage de chargé, je le vois depuis un select * from pg_catalog.pg_language) ? A priori, de ce que j'ai compris, via plpgsql, je pourrai déclarer mon curseur avant, puis l'ouvrir ce qui me permettrait de le nommer comme je le souhaite, c'est bien cela ? Source postgresql 8.3 En vous remerciant, Cordialement, Thec |
|
|
00
|
|
|
#6 | ||
|
Membre régulier
![]() Inscription : octobre 2008 Messages : 124 ![]() |
Serait-il possible d'avoir l'équivalent du code suivant
Code :
En vous remerciant par avance, Cordialement, Thec Edit : je continue ce post ci dans une nouvelle discussion, dans la partie PHP > PostgreSQL du forum ; lien : http://www.developpez.net/forums/d11...resql-curseur/ |
||
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : octobre 2008 Messages : 124 ![]() |
Je cherche juste encore la réponse à cette question avant d'indiquer comme résolue cette discussion :
Comment depuis ma ligne de commande je peux exécuter du plpgsql (j'ai le langage de chargé, je le vois depuis un select * from pg_catalog.pg_language) ? A priori, de ce que j'ai compris, via plpgsql, je pourrai déclarer mon curseur avant, puis l'ouvrir ce qui me permettrait de le nommer comme je le souhaite, c'est bien cela ? Source postgresql 8.3 Merci par avance, |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
On ne peut pas exécuter du plgpsql en dehors d'une fonction et on ne peut pas appeler une fonction autrement que via une requête SQL.
|
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : octobre 2008 Messages : 124 ![]() |
Ok, merci pour ces précisions, c'est résolu pour moi.
Désolé du temps de réponse, Cdt, Thecanea |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com