File: pgsql.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (1019 lines) | stat: -rwxr-xr-x 39,041 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
<?xml version="1.0" encoding="iso-8859-1"?>
 <reference id="ref.pgsql">
  <title>Funciones de PostgreSQL</title>
  <titleabbrev>PostgreSQL</titleabbrev>

  <partintro>
   <para>
    Postgres, desarrollado originalmente en el UC Berkeley Computer Science
    Department, ha sido pionero en muchos de los conceptos relacionales/orientados
    a objeto que ahora est&aacute;n empezando a estar disponibles en algunas bases de datos
    comperciales. Tiene soporte de lenguaje SQL92/SQL3, integridad transaccional,
    y extensibilidad de tipos. PostgreSQL es un descendiente de dominio p&uacute;blico, m&aacute;s concretamente
    open source, del c&oacute;digo original de Berkeley.
   </para>
   <para>
    PostgreSQL se encuentra disponible sin coste alguno. La versi&oacute;n actual la tienes a tu
    disposici&oacute;n en <ulink url="&url.pgsql;">www.PostgreSQL.org</ulink>.
   </para>
   <para>
    Desde la versi&oacute;n 6.3 (02/03/1998) PostgreSQL usa sockets tipo Unix. Abajo se da
    una tabla con las diferentes posibilidades. El socket se encuentra en el ficheero
    <filename>/tmp/.s.PGSQL.5432</filename>. Esta opci&oacute;n se controla mediante
    el flag '-i' del <command>postmaster</command> y cuando se incluye significa
    "escuchar sockets TCP/IP adem&aacute;s de los de dominio Unix" ya que si no se le dice
    nada solo escucha sockets tipo Unix.
    <table>
     <title>Postmaster y PHP</title>
     <tgroup cols="3">
      <thead>
       <row>
	<entry>Postmaster</entry>
	<entry>PHP</entry>
	<entry>Estado</entry>
       </row>
      </thead>
      <tbody>
       <row>
	<entry>postmaster &</entry>
	<entry>pg_connect("", "", "", "", "dbname");</entry>
	<entry>OK</entry>
       </row>
       <row>
	<entry>postmaster -i &</entry>
	<entry>pg_connect("", "", "", "", "dbname");</entry>
	<entry>OK</entry>
       </row>
       <row>
	<entry>postmaster &</entry>
	<entry>pg_connect("localhost", "", "", "", "dbname");</entry>
	<entry>
	 Unable to connect to PostgreSQL server: connectDB() failed:
	 Is the postmaster running and accepting TCP/IP (with -i)
	 connection at 'localhost' on port '5432'? in
	 /path/to/file.php3 on line 20.
         (Imposible conectar al servidor PostgreSQL, la llamada connectDB() ha fallado:
         Est&aacute; funcionando el postmaster aceptando conextiones TCP/IP (con -i)
         en 'localhost' en el puerto '5432'? en /path/to/file.php3 en linea 20.
	</entry>
       </row>
       <row>
	<entry>postmaster -i &</entry>
	<entry>pg_connect("localhost", "", "", "", "dbname");</entry>
	<entry>OK</entry>
       </row>
      </tbody>
     </tgroup>
    </table>
   </para>
   <para>
    Uno puede establecer una conexi&oacute;n con el siguiente comando:
   </para>
   <para>
    Para usar el interface de objetos grandes (large object o lo), es necesario
    encapsularlo en un bloque de transacci&oacute;n. Un bloque de transacci&oacute;n
    empieza con un <command>begin</command> y si la transacci&oacute;n fue
    valida termina con <command>commit</command> y <command>end</command>.  Si la
    transacci&oacute;n falla debe ser cerrada con 
    <command>abort</command> y <command>rollback</command>.

    <example>
     <title>Usando Objetos Grandes (lo)</title>
     <programlisting role="php">
&lt;?php
$database = pg_Connect ("", "", "", "", "jacarta");
pg_exec ($database, "begin");
    $oid = pg_locreate ($database);
    echo ("$oid\n");
    $handle = pg_loopen ($database, $oid, "w");
    echo ("$handle\n");
    pg_lowrite ($handle, "gaga");
    pg_loclose ($handle);
pg_exec ($database, "commit")
pg_exec ($database, "end")
?>
     </programlisting>
    </example>
   </para>
  </partintro>

  <refentry id="function.pg-close">
   <refnamediv>
    <refname>pg_Close</refname>
    <refpurpose>Cierra una conexi&oacute;n PostgreSQL</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>bool</type><methodname>pg_close</methodname>
     <methodparam><type>int</type><parameter>connection</parameter></methodparam>
     </methodsynopsis>
    <para>
     Devuelve &false; si connection no es un indice de conexi&oacute;n valido y &true; en
     cualquier otro caso. Cierra la conexi&oacute;n a la base de datos PostgreSQL asociada con el
     indice de conexi&oacute;n pasado como par&aacute;metro.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-cmdtuples">
   <refnamediv>
    <refname>pg_cmdTuples</refname>
    <refpurpose>Devuelve el n&uacute;mero de tuplas afectadas</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_cmdtuples</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_cmdTuples</function> devuelve el n&uacute;mero de tuplas
     (instancias o filas) afectadas por consultas INSERT, UPDATE y DELETE.
     Si no hay ninguna tupla afectada la funci&oacute;n devolver&aacute; 0.
     <example>
      <title>pg_cmdtuples</title>
      <programlisting role="php">
&lt;?php
$result = pg_exec($conn, "INSERT INTO verlag VALUES ('Autor')");
$cmdtuples = pg_cmdtuples($result);
echo $cmdtuples . " <- cmdtuples affected.";
?>
      </programlisting>
     </example>
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-connect">
   <refnamediv>
    <refname>pg_Connect</refname>
    <refpurpose>Abre una conexi&oacute;n</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_connect</methodname>
     <methodparam><type>string</type><parameter>host</parameter></methodparam>
     <methodparam><type>string</type><parameter>port</parameter></methodparam>
     <methodparam><type>string</type><parameter>options</parameter></methodparam>
     <methodparam><type>string</type><parameter>tty</parameter></methodparam>
     <methodparam><type>string</type><parameter>dbname</parameter></methodparam>
     </methodsynopsis>
    <para>
     Devuelve un &iacute;ndice de conexi&oacute;n en caso de &eacute;xito, o falso si la conexi&oacute;n
     no se puede realizar. Esta funci&oacute;n abre una conexi&oacute;n a una base de datos
     PostgreSQL. Cada uno de los argumentos debe ser una cadena entrecomillada,
     incluyendo el n&uacute;mero de puerto. Los par&aacute;metros options y tty son opcionales
     y pueden ser omitidos. Esta funci&oacute;n devuelve un &iacute;ndice de conexi&oacute;n que se necesitar&aacute;
     para otras funciones PostgreSQL. Puedes tener multiples conexiones abiertas
     al mismo tiempo.
    </para>
    <para>
     Una conexi&oacute;n tambi&eacute;n se puede establecer con el siguiente comando:
     <command>$conn = pg_connect("dbname=marliese port=5432");</command>
     
     Otros par&aacute;metros aparte de <parameter>dbname</parameter> y
     <parameter>port</parameter> son <parameter>host</parameter>, 
     <parameter>tty</parameter>, <parameter>options</parameter>,
     <parameter>user</parameter> y <parameter>password</parameter>.
    </para>
    <para>
     Ver tambi&eacute;n <function>pg_pConnect</function>.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-dbname">
   <refnamediv>
    <refname>pg_DBname</refname>
    <refpurpose>Nombre de la base de datos</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>string</type><methodname>pg_dbname</methodname>
     <methodparam><type>int</type><parameter>connection</parameter></methodparam>
     </methodsynopsis>
    <para>
Devuelve el nombre de la base de datos a la cual es el &iacute;ndice de conexi&oacute;n con
PostgreSQL est&aacute; conectado, o &false; si connection no es un &iacute;ndice de conexi&oacute;n v&aacute;lido.
</para>
</refsect1>
  </refentry>

  <refentry id="function.pg-errormessage">
   <refnamediv>
    <refname>pg_ErrorMessage</refname>
    <refpurpose>mensaje de error</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>string</type><methodname>pg_errormessage</methodname>
     <methodparam><type>int</type><parameter>connection</parameter></methodparam>
     </methodsynopsis>
    <para>
     Devuelve una cadena que contiene el mensaje de error, o &false; en caso
de fallo. Probablemente no se podr&aacute;n obtener los detalles del error a trav&eacute;s de la
funci&oacute;n
<function>pg_errormessage</function> si ocurre un error en la &uacute;ltima acci&oacute;n de base
de datos para la cual existe una conexi&oacute;n valida, esta funci&oacute;n retornar&aacute; una cadena
conteniendo el mensaje de error generado por el servidor "backend".
</para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-exec">
   <refnamediv>
    <refname>pg_Exec</refname>
    <refpurpose>Ejecuta una consulta (query)</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_exec</methodname>
     <methodparam><type>int</type><parameter>connection</parameter></methodparam>
     <methodparam><type>string</type><parameter>query</parameter></methodparam>
     </methodsynopsis>
    <para>
     Devuelve un &iacute;ndice de resultado si se pudo ejecutar la consulta, o &false; en caso
     de fallo o si connection no es un &iacute;ndice de conexi&oacute;n v&aacute;lido. Se pueden obtener
     detalles acerca del error mediante la funci&oacute;n  <function>pg_ErrorMessage</function>
     siempre que  conection sea v&aacute;lido. Envia una sentencia SQL a la base de datos PostgreSQL
     especificada por el &iacute;ndice de conexi&oacute;n. connection debe ser un &iacute;ndice v&aacute;lido
     devuelto por <function>pg_Connect</function>. El valor de devuelto por esta funci&oacute;n es
     un &iacute;ndice para ser usado al acceder a los resultados de la consulta desde otras funciones
     PostgreSQL.
     
     <note>
      <simpara>
       PHP/FI devuelv&iacute;a 1 si no es una consulta que tenga que devolver datos
       (inserts o updates, por ejemplo) y un valor mayor que 1 incluso en el
       caso de selects que no devolvieron nada. En PHP no se puede contar con
       ninguna de esas suposiciones.
      </simpara>
     </note>
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-fetch-array">
   <refnamediv>
    <refname>pg_Fetch_Array</refname>
    <refpurpose>obtiene una fila en la forma de un array</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>array</type><methodname>pg_fetch_array</methodname>
     <methodparam><type>int</type><parameter>result</parameter></methodparam>
     <methodparam><type>int</type><parameter>row</parameter></methodparam>
     <methodparam choice="opt"><type>int</type><parameter>result_type</parameter></methodparam>
     </methodsynopsis>
    <para>
     Devuelve: Un array que se corresponde con la fila obtenida, o &false; si no
     hay m&aacute;s filas.</para>
    <para>
     <function>pg_fetch_array</function> es una versi&oacute;n extendida de <function>pg_fetch_row</function>.
     Adem&aacute;s de almacenar los datos en los &iacute;ndices numericos del array resultante,
     tambi&eacute;n almacena los datos usando &iacute;ndices asociativos, empleando para ello
     el nombre del campo como la llave o &iacute;ndice.
    </para>
    <para>
     El tercer par&aacute;metro opcional <parameter>result_type</parameter> en
     <function>pg_fetch_array</function> es una constante y puede tomar cualquiera
     de los siguientes valores: PGSQL_ASSOC, PGSQL_NUM, y PGSQL_BOTH.
     <note>
      <para>
       <parameter>Result_type</parameter> se a&ntilde;adio en PHP 4.0.
      </para>
     </note>
    </para>
    <para>
     Una cosa importante a tener en cuenta es que usar
     <function>pg_fetch_array</function> NO es significativamente m&aacute;s lento que usar
     <function>pg_fetch_row</function>, y sin embargo el valor a&ntilde;adido que 
     aporta s&iacute; lo es.
    </para>
    <para>
     Para m&aacute;s detalles, ver
     <function>pg_fetch_row</function>
    </para>
    <example>
     <title>PostgreSQL fetch array</title>
     <programlisting role="php">
&lt;?php 
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

$result = pg_Exec ($conn, "SELECT * FROM authors");
if (!$result) {
    echo "An error occured.\n";
    exit;
}

$arr = pg_fetch_array ($result, 0);
echo $arr[0] . " <- array\n";

$arr = pg_fetch_array ($result, 1);
echo $arr["author"] . " <- array\n";
?>
     </programlisting>
    </example>
   </refsect1>
  </refentry>

  <refentry id="function.pg-fetch-object">
   <refnamediv>
    <refname>pg_Fetch_Object</refname>
    <refpurpose>obtener una fila en forma de objeto</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>object</type><methodname>pg_fetch_object</methodname>
     <methodparam><type>int</type><parameter>result</parameter></methodparam>
     <methodparam><type>int</type><parameter>row</parameter></methodparam>
     <methodparam choice="opt"><type>int</type><parameter>result_type</parameter></methodparam>
     </methodsynopsis>
    <para> 
     Devuelve: Un objeto cuyas propiedades se corresponden con los campos de la fila obtenida, o &false;
     si no hay m&aacute;s filas.
    </para>
    <para> 
     <function>pg_fetch_object</function> es parecida a 
     <function>pg_fetch_array</function>, con una diferencia - se devuelve un objeto,
     en vez de un array. Indirectamente, eso significa que solo puedes acceder a los
     datos por medio de su nombre de campo, y no a trav&eacute;s de sus posiciones
     (los n&uacute;meros son nombres de propiedad invalidos).
    </para>
    <para>
     El tercer par&aacute;metro opcional <parameter>result_type</parameter> en
     <function>pg_fetch_object</function> es una constante y puede tomar
     cualquiera de los siguientes valores: PGSQL_ASSOC, PGSQL_NUM, y PGSQL_BOTH.
     <note>
      <para>
       <parameter>Result_type</parameter> se a&ntilde;adio en PHP 4.0.
      </para>
     </note>
    </para>
    <para>
     Referente a la velocidad, la funci&oacute;n es identica a 
     <function>pg_fetch_array</function>, y practicamente tan r&aacute;pida como
     <function>pg_fetch_row</function> (la diferencia es insignificante).
    </para>
    <para> 
     Ver tambi&eacute;n: <function>pg_fetch_array</function> y
     <function>pg_fetch_row</function>.
     <example>
      <title>Postgres fetch object</title>
      <programlisting role="php">
&lt;?php 
$database = "verlag";
$db_conn = pg_connect ("localhost", "5432", "", "", $database);
if (!$db_conn): ?>
    &lt;H1>Failed connecting to postgres database &lt;? echo $database ?>&lt;/H1> &lt;?
    exit;
endif;

$qu = pg_exec ($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0; // postgres needs a row counter other dbs might not 

while ($data = pg_fetch_object ($qu, $row)):
    echo $data->autor." (";
    echo $data->jahr ."): ";
    echo $data->titel."&lt;BR>";
    $row++;
endwhile; ?>

&lt;PRE>&lt;?php
$fields[] = Array ("autor", "Author");
$fields[] = Array ("jahr",  "  Year");
$fields[] = Array ("titel", " Title");

$row= 0; // postgres needs a row counter other dbs might not
while ($data = pg_fetch_object ($qu, $row)):
    echo "----------\n";
    reset ($fields);
    while (list (,$item) = each ($fields)):
        echo $item[1].": ".$data->$item[0]."\n";
    endwhile;
    $row++;
endwhile;
echo "----------\n"; ?>
&lt;/PRE> &lt;?php
pg_freeResult ($qu);
pg_close ($db_conn);
?>
      </programlisting>
     </example>
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-fetch-row">
   <refnamediv>
    <refname>pg_Fetch_Row</refname>
    <refpurpose>obtiene la fila como un array enumerado</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>array</type><methodname>pg_fetch_row</methodname>
     <methodparam><type>int</type><parameter>result</parameter></methodparam>
     <methodparam><type>int</type><parameter>row</parameter></methodparam>
     </methodsynopsis>
    <para> 
     Devuelve: Un array que se corresponde con la fila obtenida, o &false; en el
     caso de que no haya m&aacute;s filas.
    </para>
    <para>
     <function>pg_fetch_row</function> obtiene una fila de datos a partir
     del resultado asociado con el identificador de resultado especificado. La fila
     se devuelve en forma de array. Cada columna del resultado se almacena en una
     posici&oacute;n del array, empezando a partir de la posici&oacute;n 0.
    </para>
    <para>
     Las siguientes llamadas a <function>pg_fetch_row</function> devolver&aacute;n la
     fila siguiente en el conjunto resultado, o falso en el caso de que no haya
     m&aacute;s filas que devolver.
    </para>
    <para>
     Ver tambi&eacute;n: <function>pg_fetch_array</function>,
     <function>pg_fetch_object</function>,
     <function>pg_result</function>.
     <example>
      <title>Postgres fetch row</title>
      <programlisting role="php">
&lt;?php 
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

$result = pg_Exec ($conn, "SELECT * FROM authors");
if (!$result) {
    echo "An error occured.\n";
    exit;
}

$row = pg_fetch_row ($result, 0);
echo $row[0] . " <- row\n";

$row = pg_fetch_row ($result, 1);
echo $row[0] . " <- row\n";

$row = pg_fetch_row ($result, 2);
echo $row[1] . " <- row\n";
?>
      </programlisting>
     </example>
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-fieldisnull">
   <refnamediv>
    <refname>pg_FieldIsNull</refname>
    <refpurpose>Comprueba si un campo es NULO</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_fieldisnull</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     <methodparam><type>int</type><parameter>row</parameter></methodparam>
     <methodparam><type>mixed</type><parameter>field</parameter></methodparam>
     </methodsynopsis>
    <para>
     Comprueba si un campo vale &null; o no. Devuleve 0 si el campo en la fila
     dada no es NULO y uno en el caso de que lo sea. El campo se puede especificar
     mediante un n&uacute;mero o un nombre de campo. La numeraci&oacute;n de filas empieza
     en 0.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-fieldname">
   <refnamediv>
    <refname>pg_FieldName</refname>
    <refpurpose>Devuelve el nombre de un campo</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>string</type><methodname>pg_fieldname</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     <methodparam><type>int</type><parameter>field_number</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_FieldName</function> devolver&aacute; el nombre del campo que ocupa
     el n&uacute;mero de columna dado en el identificador de resultado de PostgreSQL. La
     numeraci&oacute;n de los campos empieza con 0.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-fieldnum">
   <refnamediv>
    <refname>pg_FieldNum</refname>
    <refpurpose>Devuelve el n&uacute;mero de una columna</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_fieldnum</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     <methodparam><type>string</type><parameter>field_name</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_FieldNum</function> devolver&aacute; el n&uacute;mero de la columna que
     corresponde al campo cuyo nombre le damos, dentro del identificador de
     resultado de PostgreSQL. La numeraci&oacute;n de campos comienza en 0. Esta funci&oacute;n
     devolver&aacute; -1 en caso de error.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-fieldprtlen">
   <refnamediv>
    <refname>pg_FieldPrtLen</refname>
    <refpurpose>Devuelve la longitud impresa</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_fieldprtlen</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     <methodparam><type>int</type><parameter>row_number</parameter></methodparam>
     <methodparam><type>string</type><parameter>field_name</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_FieldPrtLen</function> devolver&aacute; la longitud impresa real
     (n&uacute;mero de caracteres) de un valor espec&iacute;fico dentro del identificador
     de resultado PostgreSQL. La
     numeraci&oacute;n de filas comienza en 0. Esta funci&oacute;n devolver&aacute; -1 en caso de error.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-fieldsize">
   <refnamediv>
    <refname>pg_FieldSize</refname> 
    <refpurpose>
     Devuelve el tama&ntilde;o de almacenamiento interno de un campo en concreto
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_fieldsize</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     <methodparam><type>int</type><parameter>field_number</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_FieldSize</function> devolver&aacute; el tama&ntilde;o de almacenamiento
     interno (en bytes) de uno de los campos del resultado PostgreSQL que le hemos pasado.
     La numeraci&oacute;n de campos empieza en 0. Un tama&ntilde;o de
     campo de -1 indica que se trata de un campo de longitud variable. La funci&oacute;n
     devolver&aacute; &false; en caso de error.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-fieldtype">
   <refnamediv>
    <refname>pg_FieldType</refname> 
    <refpurpose>
     Devuelve el nombre del tipo de dato correspondiente al campo cuyo n&uacute;mero pasamos como par&aacute;metro
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_fieldtype</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     <methodparam><type>int</type><parameter>field_number</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_FieldType</function> devolver&aacute; una cadena con el
     nombre del tipo de datos de un campo dado dentro del identificador de resultado  
     PostgreSQL result_id.
     La numeraci&oacute;n de campos empieza en 0.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-freeresult">
   <refnamediv>
    <refname>pg_FreeResult</refname> 
    <refpurpose>Libera memoria</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_freeresult</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_FreeResult</function> solo necesita ser llamada si estamos
     preocupados por usar demasiada memoria mientras el script se est&aacute; ejecutando.
     La memoria correspondiente a todos los resultados de consulta se libera
     autom&aacute;ticamente cuando termina el script. Pero, si est&aacute;s seguro de que no
     vas a necesitar m&aacute;s los datos del resultado en el script, puedes llamar a
     <function>pg_FreeResult</function> con el identificador del resultado
     como par&aacute;metro y la memoria asociada al resultado ser&aacute; liberada.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-getlastoid">
   <refnamediv>
    <refname>pg_GetLastOid</refname> 
    <refpurpose>Devuelve el identificador del &uacute;ltimo objeto insertado</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_getlastoid</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_GetLastOid</function> se puede usar para conseguir
     el Oid (identificador de objeto) asignado a una tupla insertada
     si el identificador de resultado proviene de una llamada a <function>pg_Exec</function>
     que fuese un INSERT SQL. Esta funci&oacute;n devuelve un entero positivo si
     hay un Oid v&aacute;lido y -1 en caso de que ocurriese un error durante
     el &uacute;ltimo comando enviado a trav&eacute;s de la funci&oacute;n <function>pg_Exec</function>
     o si esta no fuese un INSERT.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-host">
   <refnamediv>
    <refname>pg_Host</refname> 
    <refpurpose>Devuelve el nombre del host</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>string</type><methodname>pg_host</methodname>
     <methodparam><type>int</type><parameter>connection_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_Host</function> devuelve el nombre del host 
     al que identificador conexi&oacute;n PostgreSQL pasado est&aacute; conectado.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-loclose">
   <refnamediv>
    <refname>pg_loclose</refname>
    <refpurpose>Cierra un objeto grande (large object)</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>void</type><methodname>pg_loclose</methodname>
     <methodparam><type>int</type><parameter>fd</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_loclose</function> cierra un Large
     Object. <parameter>fd</parameter> es el descriptor de fichero
     del fichero grande obtenido a trav&eacute;s de <function>pg_loopen</function>.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-locreate">
   <refnamediv>
    <refname>pg_locreate</refname>
    <refpurpose>Crea un objeto grande</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_locreate</methodname>
     <methodparam><type>int</type><parameter>conn</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_locreate</function> Crea un  Large
     Object y devuelve su oid.
     <parameter>conn</parameter> determina una conexi&oacute;n de base de datos
     v&aacute;lida. Los modos de acceso INV_READ, INV_WRITE, y INV_ARCHIVE de 
     PostgreSQL no est&aacute;n soportados, el objeto se crea siempre con acceso
     tanto de lectura como de escritura. modo El INV_ARCHIVE ha desaparecido 
     incluso de PostgreSQL mismo (a partir de la versi&oacute;n 6.3).

    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-loopen">
   <refnamediv>
    <refname>pg_loopen</refname>
    <refpurpose>Abre un objeto grande</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_loopen</methodname>
     <methodparam><type>int</type><parameter>conn</parameter></methodparam>
     <methodparam><type>int</type><parameter>objoid</parameter></methodparam>
     <methodparam><type>string</type><parameter>mode</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_loopen</function> abre un Large Object (objeto grande)
     y devuelve un descriptor de fichero para el objeto grande. El descriptor
     de fichero encapsula informaci&oacute;n acerca de la conexi&oacute;n. No se debe
     cerrar la conexi&oacute;n antes de cerrar el descriptor de fichero al objeto grande.
     <parameter>objoid</parameter> especifica un oid v&aacute;lido para un objeto
     grande y <parameter>mode</parameter> puede ser "r", "w", o "rw".
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-loread">
   <refnamediv>
    <refname>pg_loread</refname>
    <refpurpose>lee un large object (objeto grande)</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>string</type><methodname>pg_loread</methodname>
     <methodparam><type>int</type><parameter>fd</parameter></methodparam>
     <methodparam><type>int</type><parameter>len</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_loread</function> lee como mucho
     <parameter>len</parameter> bytes a partir de un objeto grande
     y lo devuelve como una cadena.

     <parameter>fd</parameter> especifica un descriptor de fichero
     de objeto grande v&aacute;lido y <parameter>len</parameter> especifica
     m&aacute;ximo n&uacute;mero de bytes que se deben leer del objeto grande.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-loreadall">
   <refnamediv>
    <refname>pg_loreadall</refname>
    <refpurpose>Lee un objeto grande entero</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>void</type><methodname>pg_loreadall</methodname>
     <methodparam><type>int</type><parameter>fd</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_loreadall</function> lee un objeto grande
     y lo pasa tal cual al browser despu&eacute;s de enviar todas las cabeceras 
     pendientes. Principalmente dirijido a mandar datos binarios como
     imagenes o sonido.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-lounlink">
   <refnamediv>
    <refname>pg_lounlink</refname>
    <refpurpose>borra un large object</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>void</type><methodname>pg_lounlink</methodname>
     <methodparam><type>int</type><parameter>conn</parameter></methodparam>
     <methodparam><type>int</type><parameter>lobjid</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_lounlink</function> borra el objeto grande con 
     identificador
     <parameter>lobjid</parameter>.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-lowrite">
   <refnamediv>
    <refname>pg_lowrite</refname>
    <refpurpose>escribe en un objeto grande</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_lowrite</methodname>
     <methodparam><type>int</type><parameter>fd</parameter></methodparam>
     <methodparam><type>string</type><parameter>buf</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_lowrite</function> escribe todo lo que puede en un 
     objeto grande a partir de la variable <parameter>buf</parameter> 
     y devuelve el n&uacute;mero de bytes realmente escritos, o falso si ocurre
     alg&uacute;n error.
     <parameter>fd</parameter> es un descriptor de fichero para 
     el objeto grande obtenido a trav&eacute;s de  <function>pg_loopen</function>.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-numfields">
   <refnamediv>
    <refname>pg_NumFields</refname> 
    <refpurpose>Devuelve el n&uacute;mero de campos</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_numfields</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_NumFields</function> devuelve el n&uacute;mero de campos
     (columnas) en un resultado PostgreSQL. El par&aacute;metro es un identificador
     de resultado v&aacute;lido devuelto por <function>pg_Exec</function>. La funci&oacute;n
     devuelve -1 en caso de error.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-numrows">
   <refnamediv>
    <refname>pg_NumRows</refname> 
    <refpurpose>Devuelve el n&uacute;mero de filas</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_numrows</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_NumRows</function> devuelve el n&uacute;mero de filas
     en un resultado PostgreSQL. El par&aacute;metro es un identificador de 
     resultado PostgreSQL v&aacute;lido devuelto por <function>pg_Exec</function>. 
     En caso de error se devuelve -1.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-options">
   <refnamediv>
    <refname>pg_Options</refname> 
    <refpurpose>Devuelve opciones</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>string</type><methodname>pg_options</methodname>
     <methodparam><type>int</type><parameter>connection_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_Options</function> devuelve una cadena
     que contiene las opciones especificadas en el identificador
     de conexi&oacute;n con PostgreSQL dado.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-pconnect">
   <refnamediv>
    <refname>pg_pConnect</refname>
    <refpurpose>
     Crea una conexi&oacute;n persistente con una base de datos
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_pconnect</methodname>
     <methodparam><type>string</type><parameter>host</parameter></methodparam>
     <methodparam><type>string</type><parameter>port</parameter></methodparam>
     <methodparam><type>string</type><parameter>options</parameter></methodparam>
     <methodparam><type>string</type><parameter>tty</parameter></methodparam>
     <methodparam><type>string</type><parameter>dbname</parameter></methodparam>
     </methodsynopsis>
    <para>
     Devuelve un &iacute;ndice de conexi&oacute;n en caso de &eacute;xito, o &false; si no es 
     posible realizar la conexi&oacute;n. Abre una conexi&oacute;n persistente hacia
     una base de datos de PostgreSQL. Cada uno de los par&aacute;metros puede ser
     una cadena entrecomillada (quoted), incluyendo el n&uacute;mero de puerto.
     Los par&aacute;metros options y tty son opcionales y pueden omitirse. Esta
     funci&oacute;n devuelve un &iacute;ndice de conexi&oacute;n que luego ser&aacute; empleado al llamar
     a otras funciones PostgreSQL. Puedes tener multiples conexiones 
     persistentes abiertas al mismo tiempo. Ver tambi&eacute;n
     <function>pg_Connect</function>.
    </para>
    <para>
     Una conexi&oacute;n tambi&eacute;n se puede establecer con el comando siguiente:
     <command>$conn = pg_pconnect("dbname=marliese port=5432");</command>
     Otros par&aacute;metros adem&aacute;s de <parameter>dbname</parameter> y
     <parameter>port</parameter> son <parameter>host</parameter>, 
     <parameter>tty</parameter>, <parameter>options</parameter>,
     <parameter>user</parameter> y <parameter>password</parameter>.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-port">
   <refnamediv>
    <refname>pg_Port</refname>
    <refpurpose>Devuelve el n&uacute;mero de puerto</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>pg_port</methodname>
     <methodparam><type>int</type><parameter>connection_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_Port</function> devuelve el n&uacute;mero del puerto 
     al que el identificador de conexi&oacute;n con PostgreSQL est&aacute; conectado.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.pg-result">
   <refnamediv>
    <refname>pg_Result</refname>
    <refpurpose>Devuelve valores a partir de un identificador de resultado</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>mixed</type><methodname>pg_result</methodname>
     <methodparam><type>int</type><parameter>result_id</parameter></methodparam>
     <methodparam><type>int</type><parameter>row_number</parameter></methodparam>
     <methodparam><type>mixed</type><parameter>fieldname</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_Result</function> devuelve valores a partir
     de un identificador de resultado generado en la funci&oacute;n <function>pg_Exec</function>. 
     Los par&aacute;metros <parameter>row_number</parameter> y
     <parameter>fieldname</parameter> especifican que celda en la
     tabla queremos obtener. La numeraci&oacute;n de filas comienza en 0. En vez
     de usar el nombre del campo tambi&eacute;n puedes usar el &iacute;ndice del campo como 
     un n&uacute;mero sin entrecomillar. Los &iacute;ndices de campo comienzan tambi&eacute;n en 0.
    </para>
    <para>
    
     PostgreSQL tiene muchos tipos y solo los b&aacute;sicos est&aacute;n soportados 
     directamente aqu&iacute;. Todas las formas de enteros, boleanos y oids se devuelven
     como valores enteros. Todas las formas de los tipos float y real se 
     devuelven como valores double. Todos los dem&aacute;s tipos, incluyendo los
     arrays se devuelven como cadenas formateadas de la misma 
     manera en que PostgreSQL usa por defecto. De la misma forma en
     que lo ver&iacute;as en el programa <command>psql</command>.
    </para>  
   </refsect1>
  </refentry>

  <refentry id="function.pg-tty">
   <refnamediv>
    <refname>pg_tty</refname>
    <refpurpose>Devuelve el nombre del tty</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>string</type><methodname>pg_tty</methodname>
     <methodparam><type>int</type><parameter>connection_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>pg_tty</function> devuelve el nombre
     del tty hacia el que se dirije la salida de depuraci&oacute;n del lado
     del servidor en el identificador de conexi&oacute;n de PostgreSQL dado.
    </para>
   </refsect1>
  </refentry>

 </reference>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->