root/traduc/trunk/postgresql/dblink.xml

Revision 1088, 50.3 kB (checked in by sas, 5 months ago)

Back in Business

  • Property svn:keywords set to Date Author Revision
<
Line 
1 <?xml version="1.0" encoding="ISO-8859-15"?>
2 <!-- Dernière modification
3      le       $Date$
4      par      $Author$
5      révision $Revision$ -->
6
7 <sect1 id="dblink">
8  <title>dblink</title>
9
10  <indexterm zone="dblink">
11   <primary>dblink</primary>
12  </indexterm>
13
14  <para>
15   <filename>dblink</filename> est un module qui permet de se connecter à
16   d'autres bases de données <productname>PostgreSQL</productname> depuis
17   une session de base de données.
18  </para>
19
20  <refentry id="CONTRIB-DBLINK-CONNECT">
21   <refnamediv>
22    <refname>dblink_connect</refname>
23    <refpurpose>ouvre une connexion persistante vers une base de données
24     distante.</refpurpose>
25   </refnamediv>
26
27   <refsynopsisdiv>
28    <synopsis>
29     dblink_connect(text connstr) returns text
30     dblink_connect(text connname, text connstr) returns text
31    </synopsis>
32   </refsynopsisdiv>
33
34   <refsect1>
35    <title>Description</title>
36
37    <para>
38     <function>dblink_connect()</function> établit une connexion à une
39     base de données <productname>PostgreSQL</productname> distante. Le
40     serveur et la base de données à contacter sont identifiées par
41     une chaine de connexion standard de la
42     <application>libpq</application>. Il est possible d'affecter un nom
43     à la connexion. Plusieurs connexions nommées peuvent être ouvertes
44     en une seule fois, mais il ne peut y avoir qu'une seule connexion
45     anonyme à la fois. Toute connexion est maintenue jusqu'à ce qu'elle
46     soit close ou que la session de base de données soit terminée.
47    </para>
48   </refsect1>
49
50   <refsect1>
51    <title>Arguments</title>
52
53    <variablelist>
54     <varlistentry>
55      <term><parameter>conname</parameter></term>
56      <listitem>
57       <para>
58        Le nom à utiliser pour la connexion&nbsp;; en cas d'omission,
59        une connexion sans nom est ouverte, qui remplace toute autre connexion
60        sans nom.
61       </para>
62      </listitem>
63     </varlistentry>
64
65     <varlistentry>
66      <term><parameter>connstr</parameter></term>
67      <listitem>
68       <para>
69        Chaîne de connexion au format standard de la
70        <application>libpq</application>, par exemple
71        <literal>hostaddr=127.0.0.1 port=5432 dbname=mabase user=postgres
72        password=monmotdepasse</literal>.
73        Pour les détails, voir <function>PQconnectdb</function> dans
74        <xref linkend="libpq-connect"/>.
75       </para>
76      </listitem>
77     </varlistentry>
78    </variablelist>
79   </refsect1>
80
81   <refsect1>
82    <title>Valeur de retour</title>
83
84    <para>
85     Renvoie le statut qui est toujours <literal>OK</literal> (puisque toute
86     erreur amène la fonction à lever une erreur, sans retour).
87    </para>
88   </refsect1>
89
90   <refsect1>
91    <title>Notes</title>
92
93    <para>
94     Seuls les super-utilisateurs peuvent utiliser
95     <function>dblink_connect</function> pour créer des connexions authentifiées
96     sans mot de passe. Si des utilisateurs standard ont ce besoin, il faut
97     utiliser la fonction <function>dblink_connect_u</function> à sa place.
98    </para>
99
100    <para>
101     Il est déconseillé de choisir des noms de connexion contenant
102     des signes d'égalité car ils peuvent introduire des risques de confusion
103     avec les chaînes de connexion dans les autres fonctions
104     <filename>dblink</filename>.
105    </para>
106   </refsect1>
107
108   <refsect1>
109    <title>Exemple</title>
110
111    <programlisting>
112  select dblink_connect('dbname=postgres');
113   dblink_connect
114  ----------------
115   OK
116  (1 row)
117
118  select dblink_connect('myconn', 'dbname=postgres');
119   dblink_connect
120  ----------------
121   OK
122  (1 row)
123    </programlisting>
124   </refsect1>
125  </refentry>
126
127  <refentry id="CONTRIB-DBLINK-CONNECT-U">
128   <refnamediv>
129    <refname>dblink_connect_u</refname>
130    <refpurpose>ouvre une connexion distante à une base de données de
131     façon non sécurisée.</refpurpose>
132   </refnamediv>
133
134   <refsynopsisdiv>
135    <synopsis>
136     dblink_connect_u(text connstr) returns text
137     dblink_connect_u(text connname, text connstr) returns text
138    </synopsis>
139   </refsynopsisdiv>
140
141   <refsect1>
142    <title>Description</title>
143
144    <para>
145     <function>dblink_connect_u()</function> est identique à
146     <function>dblink_connect()</function>, à ceci près qu'elle permet à des
147     utilisateurs non-privilégiés de se connecter par toute méthode
148     d'authentification.
149    </para>
150
151    <para>
152     Si le serveur distant sélectionne une méthode d'authentification qui
153     n'implique pas de mot de passe, une impersonnalisation et une escalade
154     de droits peut survenir car la session semble émaner de l'utilisateur
155     qui exécute le serveur <productname>PostgreSQL</productname> local.
156     C'est pourquoi,
157     <function>dblink_connect_u()</function> est installé initialement sans
158     aucun droit pour <literal>PUBLIC</literal>, ce qui restreint son
159     utilisation aux seuls super-utilisateurs. Dans certaines cas,
160     le droit <literal>EXECUTE</literal> sur
161     <function>dblink_connect_u()</function> peut être accordé à quelque utilisateur
162     spécifique digne de confiance, mais cela doit se faire
163     avec une extrême prudence.
164    </para>
165
166    <para>
167     Pour plus de détails, voir <function>dblink_connect()</function>.
168    </para>
169   </refsect1>
170  </refentry>
171
172  <refentry id="CONTRIB-DBLINK-DISCONNECT">
173   <refnamediv>
174    <refname>dblink_disconnect</refname>
175    <refpurpose>ferme une connexion persistante vers une base de données
176     distante.</refpurpose>
177   </refnamediv>
178
179   <refsynopsisdiv>
180    <synopsis>
181     dblink_disconnect() returns text
182     dblink_disconnect(text connname) returns text
183    </synopsis>
184   </refsynopsisdiv>
185
186   <refsect1>
187    <title>Description</title>
188
189    <para>
190     <function>dblink_disconnect()</function> ferme une connexion ouverte
191     par <function>dblink_connect()</function>. La forme sans argument
192     ferme une connexion non nommée.
193    </para>
194   </refsect1>
195
196   <refsect1>
197    <title>Arguments</title>
198
199    <variablelist>
200     <varlistentry>
201      <term><parameter>conname</parameter></term>
202      <listitem>
203       <para>
204        Le nom de la connexion à fermer
205       </para>
206      </listitem>
207     </varlistentry>
208    </variablelist>
209   </refsect1>
210
211   <refsect1>
212    <title>Valeur de retour</title>
213
214    <para>
215     Renvoie le statut qui est toujours <literal>OK</literal> (puisque toute
216     erreur amène la fonction à lever une erreur, sans retour).
217    </para>
218   </refsect1>
219
220   <refsect1>
221    <title>Exemple</title>
222
223    <programlisting>
224  select dblink_disconnect();
225   dblink_disconnect
226  -------------------
227   OK
228  (1 row)
229
230  select dblink_disconnect('myconn');
231   dblink_disconnect
232  -------------------
233   OK
234  (1 row)
235    </programlisting>
236   </refsect1>
237  </refentry>
238
239  <refentry id="CONTRIB-DBLINK">
240   <refnamediv>
241    <refname>dblink</refname>
242    <refpurpose>exécute une requête sur une base de données
243    distante</refpurpose>
244   </refnamediv>
245
246   <refsynopsisdiv>
247    <synopsis>
248     dblink(text connname, text sql [, bool fail_on_error]) returns setof record
249     dblink(text connstr, text sql [, bool fail_on_error]) returns setof record
250     dblink(text sql [, bool fail_on_error]) returns setof record
251    </synopsis>
252   </refsynopsisdiv>
253
254   <refsect1>
255    <title>Description</title>
256
257    <para>
258     <function>dblink</function> exécute une requête (habituellement un
259     <command>SELECT</command>, mais toute instruction
260     SQL qui renvoie des lignes est valable) sur une base de données distante.
261    </para>
262
263    <para>
264     Si deux arguments <type>text</type> sont présents, le premier est d'abord
265     considéré comme nom de connexion persistante&nbsp;; si cette connexion
266     est trouvée, la commande est exécutée sur cette connexion. Dans le cas
267     contraire, le premier argument est considéré être une chaîne de connexion
268     comme dans le cas de <function>dblink_connect</function>, et la connexion
269     indiquée n'est conservée que pour la durée d'exécution de cette commande.
270    </para>
271   </refsect1>
272
273   <refsect1>
274    <title>Arguments</title>
275
276    <variablelist>
277     <varlistentry>
278      <term><parameter>conname</parameter></term>
279      <listitem>
280       <para>
281        Le nom de la connexion à utiliser&nbsp;; ce paramètre doit être omis
282        pour utiliser une connexion sans nom.
283       </para>
284      </listitem>
285     </varlistentry>
286
287     <varlistentry>
288      <term><parameter>connstr</parameter></term>
289      <listitem>
290       <para>
291        Une chaîne de connexion similaire à celle décrite précédemment pour
292        <function>dblink_connect</function>.
293       </para>
294      </listitem>
295     </varlistentry>
296
297     <varlistentry>
298      <term><parameter>sql</parameter></term>
299      <listitem>
300       <para>
301         L'instruction SQL à exécuter sur l'hôte distant, par exemple
302         <literal>select * from foo</literal>.
303       </para>
304      </listitem>
305     </varlistentry>
306
307     <varlistentry>
308      <term><parameter>fail_on_error</parameter></term>
309      <listitem>
310       <para>
311        Si true (valeur par défaut en cas d'omission), une erreur distante
312        est reportée localement comme une erreur. Dans le cas contraire, un
313        message d'erreur distant est traité localement comme un message de type
314        NOTICE, et la fonction ne retourne aucune ligne.
315       </para>
316      </listitem>
317     </varlistentry>
318    </variablelist>
319   </refsect1>
320
321   <refsect1>
322    <title>Valeur de retour</title>
323
324    <para>
325     La fonction renvoie les lignes produites par la requête. Comme
326     <function>dblink</function> peut être utilisée avec toute requête, elle
327     est déclarée comme renvoyant le type <type>record</type>, plutôt que de
328     préciser un ensemble particulier de colonnes. Cela signifie que
329     l'ensemble des colonnes attendues doit être précisé dans la
330     requête appelante &mdash; sinon <productname>PostgreSQL</productname>
331     ne sait pas quoi attendre. Voici un exemple&nbsp;:
332
333 <programlisting>
334 SELECT *
335     FROM dblink('dbname=mydb', 'select proname, prosrc from pg_proc')
336       AS t1(proname name, prosrc text)
337     WHERE proname LIKE 'bytea%';
338 </programlisting>
339
340     La partie <quote>alias</quote> de la clause <literal>FROM</literal> doit
341     spécifier les noms et types des colonnes retournés par la fonction.
342     (La précision des noms des colonnes dans un alias est une syntaxe
343     du standard SQL mais la précision des types des colonnes est une extension
344     <productname>PostgreSQL</productname>.) Cela permet au système de
345     savoir comment étendre <literal>*</literal>, et à quoi correspond
346     <structname>proname</structname> dans la clause
347     <literal>WHERE</literal>
348     avant de tenter l'exécution de la fonction. À l'exécution, une erreur
349     est renvoyée si le nombre de colonnes du résultat effectif de la requête
350     sur la base de données distante diffère de celui indiqué
351     dans la clause <literal>FROM</literal>. Les noms de colonnes n'ont pas
352     besoin de correspondre et <function>dblink</function> n'impose pas
353     une correspondance exacte des types. L'opération réussit
354     si les chaînes de données renvoyées sont valides pour le type déclaré
355     dans la clause <literal>FROM</literal>.
356    </para>
357   </refsect1>
358
359   <refsect1>
360    <title>Notes</title>
361
362    <para>
363     <function>dblink</function> récupère l'intégralité des résultats de la
364     requête avant de les renvoyer au système local. Si la requête doit
365     renvoyer un grand nombre de lignes, il est préférable d'ouvrir un
366     curseur avec <function>dblink_open</function> puis de récupérer un
367     nombre gérable de lignes.
368    </para>
369
370    <para>
371     Il est souvent plus pratique de créer une vue pour utiliser
372     <function>dblink</function> avec des requêtes prédéterminées.
373     Cela permet de laisser la vue gérer le type de la colonne plutôt que
374     d'avoir à le saisir pour chaque requête. Par exemple&nbsp;:
375
376     <programlisting>
377 CREATE VIEW myremote_pg_proc AS
378   SELECT *
379     FROM dblink('dbname=postgres', 'SELECT proname, prosrc FROM pg_proc')
380     AS t1(proname name, prosrc text);
381
382 SELECT * FROM myremote_pg_proc WHERE proname LIKE 'bytea%';
383     </programlisting>
384    </para>
385   </refsect1>
386
387   <refsect1>
388    <title>Exemple</title>
389
390    <programlisting>
391 SELECT * FROM dblink('dbname=postgres', 'SELECT proname, prosrc FROM pg_proc')
392   AS t1(proname name, prosrc text) WHERE proname LIKE 'bytea%';
393    proname   |   prosrc
394  ------------+------------
395   byteacat   | byteacat
396   byteaeq    | byteaeq
397   bytealt    | bytealt
398   byteale    | byteale
399   byteagt    | byteagt
400   byteage    | byteage
401   byteane    | byteane
402   byteacmp   | byteacmp
403   bytealike  | bytealike
404   byteanlike | byteanlike
405   byteain    | byteain
406   byteaout   | byteaout
407  (12 rows)
408
409 SELECT dblink_connect('dbname=postgres');
410   dblink_connect
411  ----------------
412   OK
413  (1 row)
414
415 SELECT * FROM dblink('SELECT proname, prosrc FROM pg_proc')
416   AS t1(proname name, prosrc text) WHERE proname LIKE 'bytea%';
417    proname   |   prosrc
418  ------------+------------
419   byteacat   | byteacat
420   byteaeq    | byteaeq
421   bytealt    | bytealt
422   byteale    | byteale
423   byteagt    | byteagt
424   byteage    | byteage
425   byteane    | byteane
426   byteacmp   | byteacmp
427   bytealike  | bytealike
428   byteanlike | byteanlike
429   byteain    | byteain
430   byteaout   | byteaout
431  (12 rows)
432
433  SELECT dblink_connect('myconn', 'dbname=regression');
434   dblink_connect
435  ----------------
436   OK
437  (1 row)
438
439  SELECT * FROM dblink('myconn', 'SELECT proname, prosrc FROM pg_proc')
440   AS t1(proname name, prosrc text) WHERE proname LIKE 'bytea%';
441    proname   |   prosrc
442  ------------+------------
443   bytearecv  | bytearecv
444   byteasend  | byteasend
445   byteale    | byteale
446   byteagt    | byteagt
447   byteage    | byteage
448   byteane    | byteane
449   byteacmp   | byteacmp
450   bytealike  | bytealike
451   byteanlike | byteanlike
452   byteacat   | byteacat
453   byteaeq    | byteaeq
454   bytealt    | bytealt
455   byteain    | byteain
456   byteaout   | byteaout
457  (14 rows)
458    </programlisting>
459   </refsect1>
460  </refentry>
461
462  <refentry id="CONTRIB-DBLINK-EXEC">
463   <refnamediv>
464    <refname>dblink_exec</refname>
465    <refpurpose>exécute une commande sur une base de données
466     distante</refpurpose>
467   </refnamediv>
468
469   <refsynopsisdiv>
470    <synopsis>
471     dblink_exec(text connname, text sql [, bool fail_on_error]) returns text
472     dblink_exec(text connstr, text sql [, bool fail_on_error]) returns text
473     dblink_exec(text sql [, bool fail_on_error]) returns text
474    </synopsis>
475   </refsynopsisdiv>
476
477   <refsect1>
478    <title>Description</title>
479
480    <para>
481     <function>dblink_exec</function> exécute une commande (c'est-à-dire toute
482     instruction SQL qui ne renvoie pas de lignes) dans une base de données
483     distante.
484    </para>
485
486    <para>
487     Quand deux arguments de type <type>text</type> sont fournis, le premier
488     est d'abord considéré comme nom d'une connexion persistante&nbsp;; si cette
489     connexion est trouvée, la commande est exécutée sur cette connexion. Dans
490     le cas contraire, le premier argument est traitée comme une chaîne de
491     connexion pour <function>dblink_connect</function>, et la connexion
492     indiquée n'est maintenue que pour la durée d'exécution de cette
493     commande.
494    </para>
495   </refsect1>
496
497   <refsect1>
498    <title>Arguments</title>
499
500    <variablelist>
501     <varlistentry>
502      <term><parameter>conname</parameter></term>
503      <listitem>
504       <para>
505        Le nom de la connexion à utiliser&nbsp;; ce paramètre doit être omis
506        pour utiliser une connexion sans nom.
507       </para>
508      </listitem>
509     </varlistentry>
510
511     <varlistentry>
512      <term><parameter>connstr</parameter></term>
513      <listitem>
514       <para>
515         Une chaîne de connexion similaire à celle décrite précédemment pour
516         <function>dblink_connect</function>.
517       </para>
518      </listitem>
519     </varlistentry>
520
521     <varlistentry>
522      <term><parameter>sql</parameter></term>
523      <listitem>
524       <para>
525        La commande SQL à exécuter sur la base de données
526        distante&nbsp;; par exemple
527        <literal>INSERT INTO foo VALUES(0,'a','{"a0","b0","c0"}')</literal>.
528       </para>
529      </listitem>
530     </varlistentry>
531
532     <varlistentry>
533      <term><parameter>fail_on_error</parameter></term>
534      <listitem>
535       <para>
536        Si true (valeur par défaut en cas d'omission), une erreur distante
537        est reportée localement comme une erreur locale. Dans le cas contraire, un
538        message d'erreur distant est traité localement comme un message de type
539        NOTICE, et la valeur de retour de la fonction est positionné à
540        <literal>ERROR</literal>.
541       </para>
542      </listitem>
543     </varlistentry>
544    </variablelist>
545   </refsect1>
546
547   <refsect1>
548    <title>Valeur de retour</title>
549
550    <para>
551     Renvoie le statut de la commande ou <literal>ERROR</literal> en cas
552     d'échec.
553    </para>
554   </refsect1>
555
556   <refsect1>
557    <title>Exemple</title>
558
559    <programlisting>
560  SELECT dblink_connect('dbname=dblink_test_slave');
561   dblink_connect
562  ----------------
563   OK
564  (1 row)
565
566  SELECT dblink_exec('INSERT INTO foo VALUES(21,''z'',''{"a0","b0","c0"}'');');
567     dblink_exec
568  -----------------
569   INSERT 943366 1
570  (1 row)
571
572  SELECT dblink_connect('myconn', 'dbname=regression');
573   dblink_connect
574  ----------------
575   OK
576  (1 row)
577
578  SELECT dblink_exec('myconn', 'INSERT INTO foo VALUES(21,''z'',''{"a0","b0","c0"}'');');
579     dblink_exec
580  ------------------
581   INSERT 6432584 1
582  (1 row)
583
584  SELECT dblink_exec('myconn', 'INSERT INTO pg_class values (''foo'')',false);
585  NOTICE:  sql error
586  DETAIL:  ERROR:  null value in column "relnamespace" violates not-null constraint
587
588   dblink_exec
589  -------------
590   ERROR
591  (1 row)
592    </programlisting>
593   </refsect1>
594  </refentry>
595
596  <refentry id="CONTRIB-DBLINK-OPEN">
597   <refnamediv>
598    <refname>dblink_open</refname>
599    <refpurpose>ouvre un curseur sur une base de données distante</refpurpose>
600   </refnamediv>
601
602   <refsynopsisdiv>
603    <synopsis>
604     dblink_open(text cursorname, text sql [, bool fail_on_error]) returns text
605     dblink_open(text connname, text cursorname, text sql [, bool fail_on_error]) returns text
606    </synopsis>
607   </refsynopsisdiv>
608
609   <refsect1>
610    <title>Description</title>
611
612    <para>
613     <function>dblink_open()</function> ouvre un curseur sur une base de
614     données distante. Le curseur peut ensuite être manipulé avec
615     <function>dblink_fetch()</function> et
616     <function>dblink_close()</function>.
617    </para>
618   </refsect1>
619
620   <refsect1>
621    <title>Arguments</title>
622
623    <variablelist>
624     <varlistentry>
625      <term><parameter>conname</parameter></term>
626      <listitem>
627       <para>
628        Le nom de la connexion à utiliser&nbsp;; ce paramètre doit être omis
629        pour utiliser une connexion sans nom.
630       </para>
631      </listitem>
632     </varlistentry>
633
634     <varlistentry>
635      <term><parameter>cursorname</parameter></term>
636      <listitem>
637       <para>
638        Nom à affecter au curseur.
639       </para>
640      </listitem>
641     </varlistentry>
642
643     <varlistentry>
644      <term><parameter>sql</parameter></term>
645      <listitem>
646       <para>
647        L'instruction <command>SELECT</command> à exécuter sur l'hôte distant,
648        par exemple <literal>SELECT * FROM pg_class</literal>.
649       </para>
650      </listitem>
651     </varlistentry>
652
653     <varlistentry>
654      <term><parameter>fail_on_error</parameter></term>
655      <listitem>
656       <para>
657        Si true (valeur par défaut en cas d'omission), une erreur distante
658        est reportée localement comme une erreur locale. Dans le cas contraire, un
659        message d'erreur distant est traité localement comme un message de type
660        NOTICE, et la valeur de retour de la fonction est positionné à
661        <literal>ERROR</literal>.
662       </para>
663      </listitem>
664     </varlistentry>
665    </variablelist>
666   </refsect1>
667
668   <refsect1>
669    <title>Valeur de retour</title>
670
671    <para>
672     Renvoie le statut, soit <literal>OK</literal> soit
673     <literal>ERROR</literal>.
674    </para>
675   </refsect1>
676
677   <refsect1>
678    <title>Notes</title>
679
680    <para>
681     Puisqu'un curseur ne peut persister qu'au sein d'une transaction,
682     <function>dblink_open</function> lance un bloc de transaction explicite
683     (<command>BEGIN</command>) côté distant, si le côté distant n'est
684     pas déjà à l'intérieur d'une transaction. Cette transaction est refermée
685     à l'exécution de l'instruction <function>dblink_close</function>.
686     Si <function>dblink_exec</function> est utilisée
687     pour modifier les données entre <function>dblink_open</function> et
688     <function>dblink_close</function>, et qu'une erreur survient ou
689     que <function>dblink_disconnect</function> est utilisé avant
690     <function>dblink_close</function>, les modifications <emphasis>sont
691     perdues</emphasis> car la transaction est annulée.
692    </para>
693   </refsect1>
694
695   <refsect1>
696    <title>Exemple</title>
697
698    <programlisting>
699  SELECT dblink_connect('dbname=postgres');
700   dblink_connect
701  ----------------
702   OK
703  (1 row)
704
705  SELECT dblink_open('foo', 'SELECT proname, prosrc FROM pg_proc');
706   dblink_open
707  -------------
708   OK
709  (1 row)
710    </programlisting>
711   </refsect1>
712  </refentry>
713
714  <refentry id="CONTRIB-DBLINK-FETCH">
715   <refnamediv>
716    <refname>dblink_fetch</refname>
717    <refpurpose>renvoie des lignes à partir d'un curseur ouvert sur une
718     base de données distante</refpurpose>
719   </refnamediv>
720
721   <refsynopsisdiv>
722    <synopsis>
723     dblink_fetch(text cursorname, int howmany [, bool fail_on_error]) returns setof record
724     dblink_fetch(text connname, text cursorname, int howmany [, bool fail_on_error]) returns setof record
725    </synopsis>
726   </refsynopsisdiv>
727
728   <refsect1>
729    <title>Description</title>
730
731    <para>
732     <function>dblink_fetch</function> récupère des lignes à partir d'un
733     curseur déjà ouvert par <function>dblink_open</function>.
734    </para>
735   </refsect1>
736
737   <refsect1>
738    <title>Arguments</title>
739
740    <variablelist>
741     <varlistentry>
742      <term><parameter>conname</parameter></term>
743      <listitem>
744       <para>
745        Nom de la connexion à utiliser&nbsp;; ce paramètre doit être omis pour
746        utiliser une connexion sans nom.
747       </para>
748      </listitem>
749     </varlistentry>
750
751     <varlistentry>
752      <term><parameter>cursorname</parameter></term>
753      <listitem>
754       <para>
755        Le nom du curseur à partir duquel récupérer les lignes.
756       </para>
757      </listitem>
758     </varlistentry>
759
760     <varlistentry>
761      <term><parameter>howmany</parameter></term>
762      <listitem>
763       <para>
764        Nombre maximum de lignes à récupérer. Les
765        <parameter>howmany</parameter> lignes suivantes sont récupérées, en
766        commençant à la position actuelle du curseur, vers l'avant. Une fois
767        le curseur arrivé à la fin, aucune ligne supplémentaire n'est
768        renvoyée.
769       </para>
770      </listitem>
771     </varlistentry>
772
773     <varlistentry>
774      <term><parameter>fail_on_error</parameter></term>
775      <listitem>
776       <para>
777        Si true (valeur par défaut en cas d'omission), une erreur distante
778        est reportée localement comme une erreur locale. Dans le cas contraire, un
779        message d'erreur distant est traité localement comme un message de type
780        NOTICE, et la fonction ne retourne aucune ligne.
781       </para>
782      </listitem>
783     </varlistentry>
784    </variablelist>
785   </refsect1>
786
787   <refsect1>
788    <title>Valeur de retour</title>
789
790    <para>
791     La fonction renvoie les lignes récupérées à partir du curseur. Pour
792     utiliser cette fonction, l'ensemble des colonnes
793     attendues doit être spécifié, comme décrit précédemment pour
794     <function>dblink</function>.
795    </para>
796   </refsect1>
797
798   <refsect1>
799    <title>Notes</title>
800
801    <para>
802     Si le nombre de colonnes de retour spécifiées dans
803     la clause <literal>FROM</literal>, et le nombre réel de colonnes renvoyées
804     par le curseur distant diffèrent, une erreur est remontée. Dans ce cas, le curseur
805     distant est tout de même avancé du nombre de lignes indiqué, comme si
806     l'erreur n'avait pas eu lieu. Il en est de même pour toute autre erreur
807     survenant dans la requête locale après l'exécution
808     du <command>FETCH</command> distant.
809    </para>
810   </refsect1>
811
812   <refsect1>
813    <title>Exemple</title>
814
815    <programlisting>
816  select dblink_connect('dbname=postgres');
817   dblink_connect
818  ----------------
819   OK
820  (1 row)
821
822  SELECT dblink_open('foo', 'SELECT proname, prosrc FROM pg_proc WHERE proname LIKE ''bytea%''');
823   dblink_open
824  -------------
825   OK
826  (1 row)
827
828  SELECT * FROM dblink_fetch('foo', 5) AS (funcname name, source text);
829   funcname |  source
830  ----------+----------
831   byteacat | byteacat
832   byteacmp | byteacmp
833   byteaeq  | byteaeq
834   byteage  | byteage
835   byteagt  | byteagt
836  (5 rows)
837
838  SELECT * FROM dblink_fetch('foo', 5) AS (funcname name, source text);
839   funcname  |  source
840  -----------+-----------
841   byteain   | byteain
842   byteale   | byteale
843   bytealike | bytealike
844   bytealt   | bytealt
845   byteane   | byteane
846  (5 rows)
847
848  SELECT * FROM dblink_fetch('foo', 5) AS (funcname name, source text);
849    funcname  |   source
850  ------------+------------
851   byteanlike | byteanlike
852   byteaout   | byteaout
853  (2 rows)
854
855  SELECT * FROM dblink_fetch('foo', 5) AS (funcname name, source text);
856   funcname | source
857  ----------+--------
858  (0 rows)
859    </programlisting>
860   </refsect1>
861  </refentry>
862
863  <refentry id="CONTRIB-DBLINK-CLOSE">
864   <refnamediv>
865    <refname>dblink_close</refname>
866    <refpurpose>ferme un curseur sur une base de données distante</refpurpose>
867   </refnamediv>
868
869   <refsynopsisdiv>
870    <synopsis>
871     dblink_close(text cursorname [, bool fail_on_error]) returns text
872     dblink_close(text connname, text cursorname [, bool fail_on_error]) returns text
873    </synopsis>
874   </refsynopsisdiv>
875
876   <refsect1>
877    <title>Description</title>
878
879    <para>
880     <function>dblink_close</function> ferme un curseur précédemment ouvert
881     avec <function>dblink_open</function>.
882    </para>
883   </refsect1>
884
885   <refsect1>
886    <title>Arguments</title>
887
888    <variablelist>
889     <varlistentry>
890      <term><parameter>conname</parameter></term>
891      <listitem>
892       <para>
893        Le nom de la connexion à utiliser&nbsp;; ce paramètre doit être omis pour
894        utiliser une connexion sans nom.
895       </para>
896      </listitem>
897     </varlistentry>
898
899     <varlistentry>
900      <term><parameter>cursorname</parameter></term>
901      <listitem>
902       <para>
903        Nom du curseur à fermer.
904       </para>
905      </listitem>
906     </varlistentry>
907
908     <varlistentry>
909      <term><parameter>fail_on_error</parameter></term>
910      <listitem>
911       <para>
912        Si true (valeur par défaut en cas d'omission), une erreur distante
913        est reportée localement comme une erreur. Dans le cas contraire, un
914        message d'erreur distant est traité localement comme un message de type
915        NOTICE, et la valeur de retour est positionnée à
916        <literal>ERROR</literal>.
917       </para>
918      </listitem>
919     </varlistentry>
920    </variablelist>
921   </refsect1>
922
923   <refsect1>
924    <title>Valeur de retour</title>
925
926    <para>
927     Renvoie le statut, soit <literal>OK</literal> soit
928     <literal>ERROR</literal>.
929    </para>
930   </refsect1>
931
932   <refsect1>
933    <title>Notes</title>
934
935    <para>
936     Si <function>dblink_open</function> a ouvert un bloc de transaction
937     explicite, et que c'est le dernier curseur ouvert restant dans cette
938     connexion, <function>dblink_close</function> exécute le
939     <command>COMMIT</command> correspondant.
940    </para>
941   </refsect1>
942
943   <refsect1>
944    <title>Exemple</title>
945
946    <programlisting>
947  select dblink_connect('dbname=postgres');
948   dblink_connect
949  ----------------
950   OK
951  (1 row)
952
953  select dblink_open('foo', 'select proname, prosrc from pg_proc');
954   dblink_open
955  -------------
956   OK
957  (1 row)
958
959  select dblink_close('foo');
960   dblink_close
961  --------------
962   OK
963  (1 row)
964    </programlisting>
965   </refsect1>
966  </refentry>
967
968  <refentry id="CONTRIB-DBLINK-GET-CONNECTIONS">
969   <refnamediv>
970    <refname>dblink_get_connections</refname>
971    <refpurpose>renvoie les noms de toutes les connexions nommées
972    ouvertes</refpurpose>
973   </refnamediv>
974
975   <refsynopsisdiv>
976    <synopsis>
977     dblink_get_connections() returns text[]
978    </synopsis>
979   </refsynopsisdiv>
980
981   <refsect1>
982    <title>Description</title>
983
984    <para>
985     <function>dblink_get_connections</function> renvoie un tableau contenant
986     le nom de toutes les connexions nommées ouvertes de
987     <filename>dblink</filename>.
988    </para>
989   </refsect1>
990
991   <refsect1>
992    <title>Valeur de retour</title>
993
994    <para>Renvoie un tableau texte des noms des connexions, ou NULL s'il n'y
995    en a pas.</para>
996   </refsect1>
997
998   <refsect1>
999    <title>Exemple</title>
1000
1001    <programlisting>
1002    SELECT dblink_get_connections();
1003    </programlisting>
1004   </refsect1>
1005  </refentry>
1006
1007  <refentry id="CONTRIB-DBLINK-ERROR-MESSAGE">
1008   <refnamediv>
1009    <refname>dblink_error_message</refname>
1010    <refpurpose>récupère le dernier message d'erreur sur la connexion
1011     nommée</refpurpose>
1012   </refnamediv>
1013
1014   <refsynopsisdiv>
1015    <synopsis>
1016     dblink_error_message(text connname) returns text
1017    </synopsis>
1018   </refsynopsisdiv>
1019
1020   <refsect1>
1021    <title>Description</title>
1022
1023    <para>
1024     <function>dblink_error_message</function> récupère le dernier message
1025     d'erreur sur une connexion donnée.
1026    </para>
1027   </refsect1>
1028
1029   <refsect1>
1030    <title>Arguments</title>
1031
1032    <variablelist>
1033     <varlistentry>
1034      <term><parameter>conname</parameter></term>
1035      <listitem>
1036       <para>
1037        Nom de la connexion à utiliser.
1038       </para>
1039      </listitem>
1040     </varlistentry>
1041    </variablelist>
1042   </refsect1>
1043
1044   <refsect1>
1045    <title>Return Value</title>
1046
1047    <para>
1048     Renvoie le dernier message, ou une chaîne vide s'il n'y a pas eu
1049     d'erreur sur cette connexion.
1050    </para>
1051   </refsect1>
1052
1053   <refsect1>
1054    <title>Exemple</title>
1055
1056    <programlisting>
1057     SELECT dblink_error_message('dtest1');
1058    </programlisting>
1059   </refsect1>
1060  </refentry>
1061
1062  <refentry id="CONTRIB-DBLINK-SEND-QUERY">
1063   <refnamediv>
1064    <refname>dblink_send_query</refname>
1065    <refpurpose>envoie une requête asynchrone à une base de données
1066     distante</refpurpose>
1067   </refnamediv>
1068
1069   <refsynopsisdiv>
1070    <synopsis>
1071     dblink_send_query(text connname, text sql) returns int
1072    </synopsis>
1073   </refsynopsisdiv>
1074
1075   <refsect1>
1076    <title>Description</title>
1077
1078    <para>
1079     <function>dblink_send_query</function> envoie une requête à exécuter
1080     de façon asynchrone, c'est-à-dire sans attendre immédiatement le résultat.
1081     Il ne doit pas déjà exister de requête asynchrone en exécution sur la
1082     connexion.
1083    </para>
1084
1085    <para>
1086     Après l'envoi réussi d'une requête asynchrone, le statut de fin
1087     d'exécution de la requête se vérifie avec
1088     <function>dblink_is_busy</function>, et les résultats sont finalement
1089     récupérés avec <function>dblink_get_result</function>. Il est
1090     aussi possible de tenter l'annulation d'une rquête asynchrone
1091     active en utilisant  <function>dblink_cancel_query</function>.
1092    </para>
1093   </refsect1>
1094
1095   <refsect1>
1096    <title>Arguments</title>
1097
1098    <variablelist>
1099     <varlistentry>
1100      <term><parameter>conname</parameter></term>
1101      <listitem>
1102       <para>
1103        Le nom de la connexion à utiliser.
1104       </para>
1105      </listitem>
1106     </varlistentry>
1107
1108     <varlistentry>
1109      <term><parameter>sql</parameter></term>
1110      <listitem>
1111       <para>
1112        L'instruction SQL à exécuter dans la base de données
1113        distante, par exemple <literal>select * from pg_class</literal>.
1114       </para>
1115      </listitem>
1116     </varlistentry>
1117    </variablelist>
1118   </refsect1>
1119
1120   <refsect1>
1121    <title>Valeur de retour</title>
1122
1123    <para>
1124     Renvoie 1 si la requête a été envoyée avec succès, 0 sinon.
1125    </para>
1126   </refsect1>
1127
1128   <refsect1>
1129    <title>Exemple</title>
1130
1131    <programlisting>
1132     SELECT dblink_send_query('dtest1', 'SELECT * FROM foo WHERE f1 &lt; 3');
1133    </programlisting>
1134   </refsect1>
1135  </refentry>
1136
1137  <refentry id="CONTRIB-DBLINK-IS-BUSY">
1138   <refnamediv>
1139    <refname>dblink_is_busy</refname>
1140    <refpurpose>vérifie si la connexion est occupée par le traitement d'une requête
1141    asynchrone</refpurpose>
1142   </refnamediv>
1143
1144   <refsynopsisdiv>
1145    <synopsis>
1146     dblink_is_busy(text connname) returns int
1147    </synopsis>
1148   </refsynopsisdiv>
1149
1150   <refsect1>
1151    <title>Description</title>
1152
1153    <para>
1154     <function>dblink_is_busy</function> teste si une requête asynchrone est
1155     en cours d'exécution.
1156    </para>
1157   </refsect1>
1158
1159   <refsect1>
1160    <title>Arguments</title>
1161
1162    <variablelist>
1163     <varlistentry>
1164      <term><parameter>conname</parameter></term>
1165      <listitem>
1166       <para>
1167        Le nom de la connexion à vérifier.
1168       </para>
1169      </listitem>
1170     </varlistentry>
1171    </variablelist>
1172   </refsect1>
1173
1174   <refsect1>
1175    <title>Valeur de retour</title>
1176
1177    <para>
1178     Renvoie 1 si la connexion est occupée, 0 dans le cas contraire.
1179     Si cette fonction renvoie 0, il est garanti que l'appel à
1180     <function>dblink_get_result</function> ne bloque pas.
1181    </para>
1182   </refsect1>
1183
1184   <refsect1>
1185    <title>Exemple</title>
1186
1187    <programlisting>
1188     SELECT dblink_is_busy('dtest1');
1189    </programlisting>
1190   </refsect1>
1191  </refentry>
1192
1193  <refentry id="CONTRIB-DBLINK-GET-RESULT">
1194   <refnamediv>
1195    <refname>dblink_get_result</refname>
1196    <refpurpose>récupère le résultat d'une requête asynchrone</refpurpose>
1197   </refnamediv>
1198
1199   <refsynopsisdiv>
1200    <synopsis>
1201     dblink_get_result(text connname [, bool fail_on_error]) returns setof record
1202    </synopsis>
1203   </refsynopsisdiv>
1204
1205   <refsect1>
1206    <title>Description</title>
1207
1208    <para>
1209     <function>dblink_get_result</function> récupère le résultat d'une
1210     requête asynchrone précédemment envoyée avec
1211     <function>dblink_send_query</function>. Si la requête n'est pas
1212     terminée, <function>dblink_get_result</function> en attend la fin.
1213    </para>
1214   </refsect1>
1215
1216   <refsect1>
1217    <title>Arguments</title>
1218
1219    <variablelist>
1220     <varlistentry>
1221      <term><parameter>conname</parameter></term>
1222      <listitem>
1223       <para>
1224        Le nom de la connexion à utiliser.