Changeset 1103
- Timestamp:
- 07/16/08 18:04:03 (4 months ago)
- Files:
-
- traduc/trunk/postgresql/arch-dev.xml (modified) (1 diff)
- traduc/trunk/postgresql/backup.xml (modified) (1 diff)
- traduc/trunk/postgresql/earthdistance.xml (modified) (12 diffs)
- traduc/trunk/postgresql/ecpg.xml (modified) (52 diffs)
- traduc/trunk/postgresql/errcodes.xml (modified) (41 diffs)
- traduc/trunk/postgresql/extend.xml (modified) (8 diffs)
- traduc/trunk/postgresql/external-projects.xml (modified) (4 diffs)
- traduc/trunk/postgresql/features-supported.xml (modified) (6 diffs)
- traduc/trunk/postgresql/features-unsupported.xml (modified) (20 diffs)
- traduc/trunk/postgresql/features.xml (modified) (2 diffs)
- traduc/trunk/postgresql/frenchtranslation.xml (modified) (2 diffs)
- traduc/trunk/postgresql/func.xml (modified) (13 diffs)
- traduc/trunk/postgresql/fuzzystrmatch.xml (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
traduc/trunk/postgresql/arch-dev.xml
r973 r1103 4 4 par $Author$ 5 5 révision $Revision$ --> 6 <!-- SAS : 20071107, PG83b2 -->7 6 8 7 <chapter id="overview"> traduc/trunk/postgresql/backup.xml
r1023 r1103 4 4 par $Author$ 5 5 révision $Revision$ --> 6 <!-- SAS : 20080319, PG831 --> 6 7 7 <chapter id="backup"> 8 8 <title>Sauvegardes et restaurations</title> traduc/trunk/postgresql/earthdistance.xml
r973 r1103 14 14 <para> 15 15 Le module <filename>earthdistance</filename> fournit deux approches 16 différentes pour calculer les distances sur la surface de la Terre. Celle17 décrit en premierdépend du package <filename>cube</filename> (qui18 <emphasis>doit</emphasis> être installé avant19 <filename>earthdistance</filename> p our que ce dernier puisse être installé).20 La seconde est basée sur le type de données interne <type>point</type> e n21 utilis antlongitude et latitude pour les coordonnées.16 différentes pour calculer de grandes distances circulaires à la surface de la 17 Terre. La première dépend du package <filename>cube</filename> (qui 18 <emphasis>doit</emphasis> être installé pour que le module 19 <filename>earthdistance</filename> puisse l'être aussi). 20 La seconde est basée sur le type de données interne <type>point</type> et 21 utilise longitude et latitude pour les coordonnées. 22 22 </para> 23 23 24 24 <para> 25 Dans ce module, la Terre est supposée parfaitement sphérique (si c 'est26 trop inexact pour vous, passez auprojet <application><ulink25 Dans ce module, la Terre est supposée parfaitement sphérique (si cette 26 hypothèse n'est pas acceptable, le projet <application><ulink 27 27 url="http://www.postgis.org/">PostGIS</ulink></application> 28 project.)28 doit être considéré.) 29 29 </para> 30 30 31 31 <sect2> 32 <title>Distances sur Terre en se basant sur descubes</title>32 <title>Distances sur Terre à partir de cubes</title> 33 33 34 34 <para> 35 35 Les données sont stockées dans des cubes qui sont des points (les coins 36 sont identiques) en utilisanttrois coordonnées représentant la distance37 x, y et z du centre de la Terre. Un domaine <type>earth</type> sur36 sont identiques), les trois coordonnées représentant la distance 37 x, y et z au centre de la Terre. Un domaine <type>earth</type> sur 38 38 <type>cube</type> est fourni. Il inclut des contraintes de vérification pour 39 que la valeur respecte ces restrictions et estraisonnablement proche de la39 que la valeur respecte ces restrictions et reste raisonnablement proche de la 40 40 surface réelle de la Terre. 41 41 </para> 42 42 43 43 <para> 44 Le rayon de la Terre est obtenu à partir de la fonction 45 <function>earth()</function>. Il est donné en mètre mais, en modification 46 cette fonction, vous pouvez modifier le module pour qu'il utilise d'autres 47 unités, ou pour utiliser une valeur différente, mais plus appropriée, du 48 rayon. 44 Le rayon de la Terre, obtenu à partir de la fonction 45 <function>earth()</function>, est donné en mètres. Il est toutefois 46 possible de modifier le module pour changer l'unité, ou pour utiliser une 47 autre valeur de rayon. 49 48 </para> 50 49 51 50 <para> 52 Ce paquet a des applications pour les bases de données enastronomie. Les53 astronomes voudront certainement modifier <function>earth()</function> pour54 qu 'elle renvoie un rayon de <literal>180/pi()</literal> de façon à ce que51 Ce paquet peut être appliqué aux bases de données d'astronomie. Les 52 astronomes peuvent modifier <function>earth()</function> pour 53 que le rayon renvoyé soit <literal>180/pi()</literal>, de sorte que 55 54 les distances soient en degrés. 56 55 </para> 57 56 58 57 <para> 59 Les fonctions sont fournies pour accepterlatitude et longitude en entrée60 et en sortie (en degrés) ainsi que pour calculer la distance entre deux61 points et p our facilement spécifier une boîte globale utilisable pour les58 Les fonctions acceptent latitude et longitude en entrée 59 et en sortie (en degrés), calculent la distance circulaire entre deux 60 points et permettent de préciser facilement une boîte utilisable par les 62 61 recherches par index. 63 62 </para> … … 67 66 </para> 68 67 68 <!-- Qu'est-ce que secant ? --> 69 69 <table id="earthdistance-cube-functions"> 70 <title>Fonctions earthdistance basées sur des cube</title>70 <title>Fonctions earthdistance par cubes</title> 71 71 <tgroup cols="3"> 72 72 <thead> … … 86 86 <entry><function>sec_to_gc(float8)</function></entry> 87 87 <entry><type>float8</type></entry> 88 <entry>Convertit la distance en ligne directe (secant) entre deux 89 points sur la surface de la Terre en une distane en cercle entre 90 eux. 88 <entry>Convertit la distance en ligne droite (sécant) entre deux 89 points à la surface de la Terre en distane circulaire. 91 90 </entry> 92 91 </row> … … 94 93 <entry><function>gc_to_sec(float8)</function></entry> 95 94 <entry><type>float8</type></entry> 96 <entry>Convertit la distance en cercle entre deux points surla surface97 de la Terre en une distance en ligne droite (s ecant).95 <entry>Convertit la distance circulaire entre deux points à la surface 96 de la Terre en une distance en ligne droite (sécant). 98 97 </entry> 99 98 </row> … … 101 100 <entry><function>ll_to_earth(float8, float8)</function></entry> 102 101 <entry><type>earth</type></entry> 103 <entry>Renvoie l'emplacement d'un point surla surface de la Terre étant104 donné sa latitude (argument 1) et sa longitude (argument 2) en degrés.102 <entry>Renvoie l'emplacement d'un point à la surface de la Terre étant 103 données sa latitude (argument 1) et sa longitude (argument 2) en degrés. 105 104 </entry> 106 105 </row> … … 108 107 <entry><function>latitude(earth)</function></entry> 109 108 <entry><type>float8</type></entry> 110 <entry>Renvoie la latitude en degrés d'un point surla surface de la109 <entry>Renvoie la latitude en degrés d'un point à la surface de la 111 110 Terre. 112 111 </entry> … … 115 114 <entry><function>longitude(earth)</function></entry> 116 115 <entry><type>float8</type></entry> 117 <entry>Renvoie la longitude en degrés d'un point surla surface de la116 <entry>Renvoie la longitude en degrés d'un point à la surface de la 118 117 Terre. 119 118 </entry> … … 122 121 <entry><function>earth_distance(earth, earth)</function></entry> 123 122 <entry><type>float8</type></entry> 124 <entry>Renvoie la distance en cercle entre deux points surla surface123 <entry>Renvoie la distance circulaire entre deux points à la surface 125 124 de la Terre. 126 125 </entry> … … 129 128 <entry><function>earth_box(earth, float8)</function></entry> 130 129 <entry><type>cube</type></entry> 131 <entry>Renvoie une boîte convenable pour une recherche par index en132 utilisantl'opérateur <literal>@></literal> du type cube pour les133 points dans une distance cercle donnée d'un emplacement. Certains134 points de cette boîte sont plus loin que la distance cercle spécifiée135 en partant de l'emplacement. Donc, une deuxième vérification utilisant136 <function>earth_distance</function> doit être inclusdans la requête.130 <entry>Renvoie une boîte autorisant une recherche par index avec 131 l'opérateur <literal>@></literal> du type cube pour les 132 points situés au maximum à une distance circulaire donnée d'un 133 emplacement. Certains points de cette boîte sont plus éloignés que 134 la distance circulaire indiquée. Une deuxième vérification utilisant 135 <function>earth_distance</function> doit, donc, être incluse dans la requête. 137 136 </entry> 138 137 </row> … … 144 143 145 144 <sect2> 146 <title>Distances sur Terre basées sur despoints</title>145 <title>Distances sur Terre à partir de points</title> 147 146 148 147 <para> 149 La seconde partie du module se base sur la représentation des emplacements 150 sur Terre en tant que valeurs de type <type>point</type>, pour lesquelles 151 le premier composant est pris pour représenter la longitude en degrés, et 152 le second composant est pris pour représenter la latitude en degrés. Les 153 points sont pris en tant que (longitude, latitude) et non pas vice-versa 154 car la longitude est plus proche de l'idée intuitive de l'axe X et la 155 latitude celle de l'axe Y. 148 La seconde partie du module se fonde sur la représentation des emplacements 149 sur Terre comme valeurs de type <type>point</type>, pour lesquelles 150 le premier composant représente la longitude en degrés, et 151 le second la latitude en degrés. Les points ont la forme (longitude, 152 latitude) et non l'inverse, car intuitivement, la longitude se compare 153 à l'axe X, la latitude à l'axe Y. 156 154 </para> 157 155 158 156 <para> 159 Un seul opérateurest fourni :157 Un opérateur unique est fourni : 160 158 </para> 161 159 162 160 <table id="earthdistance-point-operators"> 163 <title>Opérateurs earthdistance basés sur lespoints</title>161 <title>Opérateurs earthdistance par points</title> 164 162 <tgroup cols="3"> 165 163 <thead> … … 172 170 <tbody> 173 171 <row> 172 <!-- statute miles ? miles terrestres ? --> 174 173 <entry><type>point</type> <literal><@></literal> <type>point</type></entry> 175 174 <entry><type>float8</type></entry> 176 <entry>Donne la distance en miles entre deux points surla surface de175 <entry>Donne la distance en miles entre deux points à la surface de 177 176 la Terre. 178 177 </entry> … … 183 182 184 183 <para> 185 Notez que contrairement à la partie basée sur <type>cube</type> dans ce186 module, les unités ne sont pas modifiables ici : modifierla fonction187 <function>earth()</function> n'affecte pas les résultats de cetopérateur.184 Contrairement à la partie fondée sur <type>cube</type>, les unités 185 ne sont pas modifiables : une modification de la fonction 186 <function>earth()</function> n'affecte pas les résultats de l'opérateur. 188 187 </para> 189 188 190 189 <para> 191 Un inconvénient de la représentation longitude/latitude est que vous avez192 besoin de faire attention aux conditions particulières près des pôles et193 près de +/- 180 degrés de longitude. La représentation basée sur les194 <type>cube</type> évite cesdiscontinuités.190 La représentation longitude/latitude a pour inconvénient d'obliger à tenir 191 compte des conditions particulières près des pôles et près des longitudes de 192 +/- 180 degrés. La représentation par <type>cube</type> évite ces 193 discontinuités. 195 194 </para> 196 195 traduc/trunk/postgresql/ecpg.xml
r973 r1103 4 4 par $Author$ 5 5 révision $Revision$ --> 6 <!-- SAS : 20070516, PG824 -->7 6 8 7 <chapter id="ecpg"> … … 133 132 134 133 Si la cible de connexion est indiquée littéralement (c'est-à-dire non pas via une 135 variable de référence) et la valeur n'est pas mise entre guillemets,134 variable de référence) et que la valeur n'est pas mise entre guillemets, 136 135 les règles d'insensibilité à la casse du SQL standard sont appliquées. 137 Dans ce cas, il est possible, si cela s'av éraitnécessaire, d'encadrer136 Dans ce cas, il est possible, si cela s'avère nécessaire, d'encadrer 138 137 séparément les paramètres individuels de guillemets doubles. 139 138 En pratique, l'utilisation d'une chaîne littérale (entre guillemets … … 191 190 192 191 <para> 193 Voici quelques exemples d'instructions <command>CONNECT</command> :192 Quelques exemples d'instructions <command>CONNECT</command> : 194 193 <programlisting>EXEC SQL CONNECT TO ma_base@sql.mondomaine.com; 195 194 … … 376 375 </programlisting> 377 376 Cette option est particulièrement intéressante si un grand nombre 378 d'instructions doivent être exécutées à partir de la même connexion. Elle ne tient pas379 compte des threads.377 d'instructions doivent être exécutées à partir de la même connexion. Elle ne 378 gère pas les threads. 380 379 </para> 381 380 </sect1> … … 385 384 386 385 <para> 387 La <xref linkend="ecpg-commands"/> présent aitl'exécution d'instructions386 La <xref linkend="ecpg-commands"/> présente l'exécution d'instructions 388 387 SQL à partir d'un programme SQL embarqué. Certaines de ces 389 388 instructions n'utilisent que des valeurs fixes. Elles n'offrent pas la … … 405 404 406 405 <para> 407 Échanger desdonnées entre le programme C et les instructions SQL est406 L'échange de données entre le programme C et les instructions SQL est 408 407 particulièrement simple en SQL embarqué. Plutôt que de laisser le programme 409 408 copier les données dans l'instruction, ce qui implique un certain nombre de … … 420 419 421 420 <para> 422 Ce style d'insertion sde variables C dans des instructions SQL fonctionne421 Ce style d'insertion de variables C dans des instructions SQL fonctionne 423 422 dans tous les cas où l'on attend une expression de valeur dans une instruction SQL. 424 423 </para> … … 455 454 <programlisting>EXEC SQL int i = 4; 456 455 </programlisting> 457 Il peut y avoir autant de sections de déclarations dans un programme que 458 souhaité. 456 Le nombre de sections de déclarations dans un programme n'est pas limité. 459 457 </para> 460 458 … … 482 480 (<foreignphrase>struct</foreignphrase>) et pointeurs 483 481 (<foreignphrase>pointer</foreignphrase>) peuvent aussi être utilisés comme 484 vari bale hôte. Il existe également des types spéciaux de482 variables hôtes. Il existe également des types spéciaux de 485 483 variables hôtes qui n'existent qu'en ECPG. 486 484 </para> … … 494 492 <para> 495 493 Une des utilisations les plus communes d'une déclaration de tableaux 496 est certainement l'allocation d'un tableau de caractères comme dans :494 est certainement l'allocation d'un tableau de caractères : 497 495 <programlisting>EXEC SQL BEGIN DECLARE SECTION; 498 496 char chaine[50]; … … 528 526 529 527 <varlistentry> 530 <term>Pointe rs</term>528 <term>Pointeurs</term> 531 529 <listitem> 532 530 <para> … … 563 561 <para> 564 562 Le type spécial <type>VARCHAR</type> est converti en une 565 <type>struct</type> nommée pour chaque variable. Une déclaration telle 566 que : 563 <type>struct</type> nommée pour chaque variable. La déclaration : 567 564 <programlisting>VARCHAR var[180]; 568 565 </programlisting> … … 594 591 595 592 <para> 596 Voici unexemple :593 Par exemple : 597 594 <programlisting>/* 598 595 * Soit la table : … … 754 751 755 752 <para> 756 La bibliothèque pgtypes établi eune correspondance entre les types753 La bibliothèque pgtypes établit une correspondance entre les types 757 754 <productname>PostgreSQL</productname> et les équivalents en C. Elle fournit 758 755 aussi des fonctions permettant des calculs simples sur ces types en C, … … 778 775 <title>Le type numeric</title> 779 776 <para> 780 Le type numeric permet des calculs avec une précision arbitraire. Voir777 Le type numeric permet des calculs de précision arbitraire. Voir 781 778 <xref linkend="datatype-numeric"/> pour le type équivalent dans le serveur 782 779 <productname>PostgreSQL</productname>. Du fait de la précision arbitraire, … … 796 793 <listitem> 797 794 <para> 798 réclame un pointeur vers une variable numeric nouvellement allouée.795 réclame un pointeur vers une variable de type numeric nouvellement allouée. 799 796 <synopsis>numeric *PGTYPESnumeric_new(void); 800 797 </synopsis> … … 832 829 ne supporte pas le stockage de l'adresse du premier caractère 833 830 invalide dans <literal>*endptr</literal>. 834 <literal>endptr</literal> peut être init ailisé à NULL en toute sécurité.831 <literal>endptr</literal> peut être initialisé à NULL en toute sécurité. 835 832 </para> 836 833 </listitem> … … 1078 1075 int PGTYPESnumeric_to_decimal(numeric *src, decimal *dst); 1079 1076 </synopsis> 1080 La fonction convertit la valeur numérique de la variable po ntée par1077 La fonction convertit la valeur numérique de la variable pointée par 1081 1078 <literal>nv</literal> en une variable de type decimal pointée par 1082 1079 <literal>dst</literal>. 1083 1080 La fonction renvoie 0 en cas de succès et -1 en cas d'erreur, 1084 dépassement inclus. En cas de débo drdement, la variable globale1081 dépassement inclus. En cas de débordement, la variable globale 1085 1082 <literal>errno</literal> est initialisée à 1086 1083 <literal>PGTYPES_NUM_OVERFLOW</literal>. … … 1629 1626 un pointeur sur une chaîne C de type char* (<literal>endptr</literal>). 1630 1627 Actuellement, ecpg analyse toujours la chaîne complète et ne 1631 supporte donc pas le stockage del'adresse du premier caractère invalide1628 permet pas de stocker l'adresse du premier caractère invalide 1632 1629 dans <literal>*endptr</literal>. <literal>endptr</literal> peut 1633 1630 être initialisé à NULL en toute sécurité. … … 1640 1637 sur cette valeur. 1641 1638 </para> 1642 <!-- SAS : to parse ne peut-il être traduit par le néologisme compréhensible1643 parser ? Dans le cas présent analyser me semble trop fort, puisque1644 l'idée est qu'ecpg peut parcourir la chaîne sans faire aucun traitement1645 sur ce qui est lu. -->1646 1639 <para> 1647 1640 En général, la chaîne saisie peut contenir toute combinaison de 1648 1641 spécification autorisée de date, d'espace et de spécification 1649 1642 autorisée d'heure. Les fuseaux horaires ne sont pas supportés par ecpg. 1650 Il peut les analyser mais n'applique aucun calcul au contraire d eserveur1643 Il peut les analyser mais n'applique aucun calcul au contraire du serveur 1651 1644 <productname>PostgreSQL</productname> par exemple. Les fuseaux horaires 1652 1645 sont ignorés silencieusement. … … 1841 1834 <para> 1842 1835 <literal>%G</literal> - est remplacé par une année comme nombre 1843 déci aml avec le siècle. Il s'agit de l'année qui contient la plus1836 décimal avec le siècle. Il s'agit de l'année qui contient la plus 1844 1837 grande partie de la semaine (lundi étant le premier jour de la 1845 1838 semaine) ; … … 1915 1908 <para> 1916 1909 <literal>%p</literal> - remplacé par la représentation nationale de 1917 "ante meridiem" ou "post meridiem"suivant le cas ;1910 « ante meridiem » ou « post meridiem » suivant le cas ; 1918 1911 </para> 1919 1912 </listitem> … … 2079 2072 int PGTYPEStimestamp_sub(timestamp *ts1, timestamp *ts2, interval *iv); 2080 2073 </synopsis> 2081 La fonction soustrai ela variable timestamp pointée par2074 La fonction soustrait la variable timestamp pointée par 2082 2075 <literal>ts2</literal> de la variable timestamp pointée par 2083 2076 <literal>ts1</literal> et stocke le résultat dans la variable de type interval … … 2107 2100 <para> 2108 2101 Si le masque de formatage <literal>fmt</literal> est NULL, la fonction 2109 utilise rla masque de formatage par défaut qui est <literal>%Y-%m-%d2102 utilise la masque de formatage par défaut qui est <literal>%Y-%m-%d 2110 2103 %H:%M:%S</literal>. 2111 2104 </para> … … 2244 2237 <literal>intvlsrc</literal> dans la variable pointée par 2245 2238 <literal>intvldest</literal>. La 2246 mémoire de la variable de destination doit être allou eravant2239 mémoire de la variable de destination doit être allouée avant 2247 2240 d'appeler la fonction. 2248 2241 </para> … … 2448 2441 </sect1> 2449 2442 2450 <!-- ICI -->2451 2443 <sect1 id="ecpg-informix-compat"> 2452 2444 <title>Mode de compatibilité <productname>Informix</productname></title> … … 2466 2458 </para> 2467 2459 <para> 2468 Il existe deux modes de compatibilité INFORMIX et INFORMIX_SE.2469 </para> 2470 <para> 2471 Lors de l'édition de liens deprogrammes qui utilisent ce mode de compatibilité,2460 Il existe deux modes de compatibilité : INFORMIX et INFORMIX_SE. 2461 </para> 2462 <para> 2463 Lors de l'édition de liens pour des programmes qui utilisent ce mode de compatibilité, 2472 2464 il est nécessaire de lier les programmes avec <literal>libcompat</literal>, 2473 2465 fournie avec ecpg. … … 2485 2477 programme C hôte ; la plupart des 2486 2478 fonctions supplémentaires du mode de compatibilité 2487 <productname>Informix</productname> permet d'opérer sur ces types.2479 <productname>Informix</productname> permettent d'opérer sur ces types. 2488 2480 L'étendue de la compatibilité est toutefois limitée. L'idée n'est pas de 2489 2481 mimer le comportement d'<productname>Informix</productname> ; … … 2531 2523 int decadd(decimal *arg1, decimal *arg2, decimal *sum); 2532 2524 </synopsis> 2533 <!-- SAS : un e opérande, non ?-->2534 La fonction reçoit un pointeur vers l a premièreopérande de type decimal2535 (<literal>arg1</literal>), un pointeur vers l a secondeopérande de type2525 <!-- SAS : un opérande --> 2526 La fonction reçoit un pointeur vers le premier opérande de type decimal 2527 (<literal>arg1</literal>), un pointeur vers le second opérande de type 2536 2528 decimal (<literal>arg2</literal>) et un pointeur vers une valeur de type 2537 2529 decimal destinée à contenir la somme (<literal>sum</literal>). En cas de … … 2601 2593 <listitem> 2602 2594 <para> 2603 convertit une valeur de sa représentation ASCII en unevaleur de type2595 convertit une valeur de sa représentation ASCII en valeur de type 2604 2596 decimal. 2605 2597 <synopsis> … … 2723 2715 <listitem> 2724 2716 <para> 2725 effectue la multiplication de deux va riables de type values.2717 effectue la multiplication de deux valeurs décimales. 2726 2718 <synopsis> 2727 2719 int decmul(decimal *n1, decimal *n2, decimal *result); … … 2779 2771 (<literal>np</literal>) qu'elle convertit dans sa représentation textuelle. 2780 2772 <literal>cp</literal> est le tampon de stockage du résultat de 2781 l'opération. Le paramètre <literal>right</literal> indique le nombre s2773 l'opération. Le paramètre <literal>right</literal> indique le nombre 2782 2774 de chiffres à inclure à droite du point décimal dans le résultat. 2783 2775 Le résultat est arrondi à ce nombre de chiffres décimaux. Configurer … … 2865 2857 L'implantation d'ecpg diffère de celle 2866 2858 d'<productname>Informix</productname>. <productname>Informix</productname> 2867 limite un entier à la plage -2.147.483.647 .. 2.147.483.6472859 limite un entier long à la plage -2.147.483.647 .. 2.147.483.647 2868 2860 alors que les limites de l'implantation d'ecpg dépendent de 2869 2861 l'architecture (<literal>-LONG_MAX .. LONG_MAX</literal>). … … 2883 2875 (<literal>d</literal>) et le second est un pointeur vers la chaîne cible. 2884 2876 Le format de sortie est toujours <literal>yyyy-mm-dd</literal>. Il est donc 2885 nécessaire d'allouer au minimum 11 octets (ce qui inclu ele2877 nécessaire d'allouer au minimum 11 octets (ce qui inclut le 2886 2878 terminateur NUL) pour la chaîne. 2887 2879 </para> … … 2894 2886 d'<productname>Informix</productname>. Dans <productname>Informix</productname>, 2895 2887 le format peut être modifié en configurant les variables 2896 d'environnement. EN revanche, enecpg, le format de sortie ne peut pas2888 d'environnement. EN revanche, avec ecpg, le format de sortie ne peut pas 2897 2889 être modifié. 2898 2890 </para> … … 3220 3212 int dtsub(timestamp *ts1, timestamp *ts2, interval *iv); 3221 3213 </synopsis> 3222 La fonction soustrai ela variable timestamp pointée par3214 La fonction soustrait la variable timestamp pointée par 3223 3215 <literal>ts2</literal> à la variable timestamp pointée par 3224 3216 <literal>ts1</literal> et stocke le résultat dans la variable … … 3329 3321 <listitem> 3330 3322 <para> 3331 <literal>&</literal> (esperluette ou et commercial) - remplace3332 une position autrement vide par un zéro ;3323 <literal>&</literal> (esperluette, perluette ou « et commercial 3324 ») - remplace une position autrement vide par un zéro ; 3333 3325 </para> 3334 3326 </listitem> … … 3394 3386 <listitem> 3395 3387 <para> 3396 convertit une chaîne en majuscule .3388 convertit une chaîne en majuscules. 3397 3389 <synopsis> 3398 3390 void rupshift(char *str); … … 3802 3794 3803 3795 <para> 3804 Avant d'utiliser une zone de descripteur SQL, il est nécessaire d 'en3805 allouer une :3796 Avant d'utiliser une zone de descripteur SQL, il est nécessaire de 3797 l'allouer : 3806 3798 <programlisting>EXEC SQL ALLOCATE DESCRIPTOR <replaceable>identifiant</replaceable>; 3807 3799 </programlisting> … … 3816 3808 3817 3809 <para> 3818 Pour utiliser la zone d'un descripteur, il faut le spécifier comme cible de3810 Pour utiliser une zone de descripteur, il suffit de le préciser comme cible de 3819 3811 stockage dans une clause <literal>INTO</literal> à la place de la liste des 3820 3812 variables hôtes : … … 4131 4123 <para> 4132 4124 L'instruction <literal>EXEC SQL WHENEVER</literal> est une directive du 4133 préprocesseur SQL, pas une instruction C. Les actions ien cas d'erreur4134 ou d'avertissement qu'elle définit s'appliquent à toutes les instructions4125 préprocesseur SQL, pas une instruction C. Les actions sur erreur 4126 ou avertissement qu'elle définit s'appliquent à toutes les instructions 4135 4127 SQL embarquées qui apparaissent avant l'endroit où le gestionnaire est défini, 4136 4128 à moins qu'une action différente n'ait été définie pour la même condition … … 4140 4132 comportement désiré : 4141 4133 <programlisting>/* 4142 * MAUVAIS4134 * FAUX 4143 4135 */ 4144 4136 int main(int argc, char *argv[]) … … 4155 4147 4156 4148 <programlisting>/* 4157 * MAUVAIS4149 * FAUX 4158 4150 */ 4159 4151 int main(int argc, char *argv[]) … … 4287 4279 <literal>SQLSTATE</literal> est un tableau de cinq caractères. Ces cinq 4288 4280 caractères contiennent des chiffres ou des lettres en majuscules 4289 représentant les codes de différentes conditions d'erreur sou4290 d'avertissement s. <literal>SQLSTATE</literal> dispose d'un schéma4281 représentant les codes de différentes conditions d'erreur ou 4282 d'avertissement. <literal>SQLSTATE</literal> dispose d'un schéma 4291 4283 hiérarchique : les deux premiers caractères indiquent la classe 4292 4284 générale de la condition, les trois derniers caractères indiquent une … … 4302 4294 4303 4295 <para> 4304 <literal>SQLCODE</literal>, schéma obsolète de codes d'erreur s, est un4296 <literal>SQLCODE</literal>, schéma obsolète de codes d'erreur, est un 4305 4297 simple entier. Une valeur 0 indique un succès, une valeur positive 4306 4298 indique un succès avec des informations supplémentaires, une valeur négative … … 4313 4305 <literal>SQLCODE</literal> spécifiques pour sa propre utilisation. ces 4314 4306 valeurs sont listées ci-dessous avec leurs valeurs numériques et leurs noms symboliques. 4315 Elles ne sont pas portables vers d'autres impl émentations SQL. Pour4307 Elles ne sont pas portables vers d'autres implantations SQL. Pour 4316 4308 simplifier le portage d'applications vers la schéma <literal>SQLSTATE</literal>, 4317 4309 le code <literal>SQLSTATE</literal> correspondant est également affiché. … … 4372 4364 <para> 4373 4365 une requête retourne plusieurs lignes alors que 4374 l'instruction n'est préparée à ne stocker qu'une seule ligne de résultat (par4366 l'instruction est préparée à ne stocker qu'une seule ligne de résultat (par 4375 4367 exemple, parce que les variables indiquées ne sont pas des tableaux) 4376 4368 (SQLSTATE 21000) ; … … 4435 4427 l'instruction envoyée au serveur <productname>PostgreSQL</productname> 4436 4428 est vide (ceci ne peut normalement pas survenir dans un programme SQL 4437 embarqué , celapeut donc indiquer une erreur interne) (SQLSTATE4429 embarqué et peut donc indiquer une erreur interne) (SQLSTATE 4438 4430 YE002) ; 4439 4431 </para> … … 4524 4516 <listitem> 4525 4517 <para> 4526 un élément invalide du descripteur est demandé ( ceci est uneerreur4518 un élément invalide du descripteur est demandé (erreur 4527 4519 interne) (SQLSTATE YE002) ; 4528 4520 </para> … … 4587 4579 <para> 4588 4580 il s'agit d'une condition sans gravité qui indique que la dernière commande 4589 n'a récupéré outraité aucune ligne, ou que la fin du curseur est atteinte4581 n'a récupéré ni traité aucune ligne, ou que la fin du curseur est atteinte 4590 4582 (SQLSTATE 02000). 4591 4583 </para> … … 4755 4747 <para> 4756 4748 Après avoir vu comment former des programmes C incluant du SQL embarqué, il 4757 est tout aussi intéressant de savoir comment les compiler. Avant d'être compilé, 4749 est tout aussi intéressant de savoir comment les compiler. 4750 </para> 4751 <para> 4752 Avant d'être compilé, 4758 4753 le fichier est passé au travers du préprocesseur <acronym>C</acronym> pour le 4759 4754 <acronym>SQL</acronym> embarqué. Ce préprocesseur, appelé aussi … … 4902 4897 4903 4898 <para> 4904 La substitution de variable intervient quand un symbole commence avecun4899 La substitution de variable intervient quand un symbole débute par un 4905 4900 caractère deux-points (<literal>:</literal>). La variable possédant ce nom 4906 4901 est recherchée parmi toutes les variables précédemment déclarées dans une traduc/trunk/postgresql/errcodes.xml
r973 r1103 4 4 par $Author$ 5 5 révision $Revision$ --> 6 <!-- SAS : 20070328, PG 8.2.3 -->7 6 8 7 <appendix id="errcodes-appendix"> … … 17 16 Tous les messages émis par le serveur <productname>PostgreSQL</productname> 18 17 se voient affectés des codes d'erreur sur cinq caractères. Ces codes suivent les 19 conventions du standard SQL pour les codes <quote>SQLSTATE</quote>. Il est 20 préférable que les applications qui souhaitent connaître la condition d'erreur 21 survenue testent le code d'erreur plutôt que d'effectuer une recherche dans 18 conventions du standard SQL pour les codes <quote>SQLSTATE</quote>. 19 </para> 20 <para> 21 Les applications qui souhaitent connaître la condition d'erreur 22 survenue peuvent tester le code d'erreur plutôt que récupérer 22 23 le message d'erreur textuel. Les codes d'erreurs sont moins sujets à 23 24 changement au fil des versions de <productname>PostgreSQL</productname> et ne 24 sont pas dépendants de la localisation des messages d'erreur.25 dépendent pas de la localisation des messages d'erreur. 25 26 Seuls certains codes d'erreur produits par 26 27 <productname>PostgreSQL</productname> sont définis par le standard … … 82 83 <tbody> 83 84 84 <row> 85 <entry spanname="span13"><emphasis role="bold">Class 00 — Successful Completion</emphasis></entry> 85 <!-- SAS 20080708 : Pourquoi le texte n'est-il pas traduit ? --> 86 <row> 87 <entry spanname="span13"><emphasis role="bold">Class 00 — Succès de 88 l'opération</emphasis></entry> 86 89 </row> 87 90 … … 94 97 95 98 <row> 96 <entry spanname="span13"><emphasis role="bold">Class 01 — Warning</emphasis></entry>99 <entry spanname="span13"><emphasis role="bold">Class 01 — Avertissement</emphasis></entry> 97 100 </row> 98 101 … … 147 150 148 151 <row> 149 <entry spanname="span13"><emphasis role="bold">Class 02 — No Data (this is also a warning class per the SQL standard)</emphasis></entry> 152 <entry spanname="span13"><emphasis role="bold">Class 02 — Pas de données 153 (également une classe d'averissement selon le standard SQL)</emphasis></entry> 150 154 </row> 151 155 … … 164 168 165 169 <row> 166 <entry spanname="span13"><emphasis role="bold">Class 03 — SQL Statement Not Yet Complete</emphasis></entry> 170 <entry spanname="span13"><emphasis role="bold">Class 03 — Instruction SQL 171 pas encore terminée</emphasis></entry> 167 172 </row> 168 173 … … 175 180 176 181 <row> 177 <entry spanname="span13"><emphasis role="bold">Class 08 — Connection Exception</emphasis></entry> 182 <entry spanname="span13"><emphasis role="bold">Class 08 — Problème de 183 connexion</emphasis></entry> 178 184 </row> 179 185 … … 222 228 223 229 <row> 224 <entry spanname="span13"><emphasis role="bold">Class 09 — Triggered Action Exception</emphasis></entry> 230 <entry spanname="span13"><emphasis role="bold">Class 09 — Problème 231 d'action déclenchée</emphasis></entry> 225 232 </row> 226 233 … … 233 240 234 241 <row> 235 <entry spanname="span13"><emphasis role="bold">Class 0A — Feature Not Supported</emphasis></entry> 242 <entry spanname="span13"><emphasis role="bold">Class 0A — Fonctionnalité 243 non supportée</emphasis></entry> 236 244 </row> 237 245 … … 244 252 245 253 <row> 246 <entry spanname="span13"><emphasis role="bold">Class 0B — Invalid Transaction Initiation</emphasis></entry> 254 <entry spanname="span13"><emphasis role="bold">Class 0B — Initialisation 255 de transaction invalide</emphasis></entry> 247 256 </row> 248 257 … … 255 264 256 265 <row> 257 <entry spanname="span13"><emphasis role="bold">Class 0F — Locator Exception</emphasis></entry> 266 <entry spanname="span13"><emphasis role="bold">Classe 0F — Problème de 267 pointeur (<foreignphrase>Locator</foreignphrase>)</emphasis></entry> 258 268 </row> 259 269 … … 272 282 273 283 <row> 274 <entry spanname="span13"><emphasis role="bold">Class 0L — Invalid Grantor</emphasis></entry> 284 <entry spanname="span13"><emphasis role="bold">Classe 0L — Granteur 285 invalide</emphasis></entry> 275 286 </row> 276 287 … … 289 300 290 301 <row> 291 <entry spanname="span13"><emphasis role="bold">Class 0P — Invalid Role Specification</emphasis></entry> 302 <entry spanname="span13"><emphasis role="bold">Classe 0P — Spécification 303 de rôle invalide</emphasis></entry> 292 304 </row> 293 305 … … 300 312 301 313 <row> 302 <entry spanname="span13"><emphasis role="bold">Class 21 — Cardinality Violation</emphasis></entry> 314 <entry spanname="span13"><emphasis role="bold">Class 21 — Violation de 315 cardinalité</emphasis></entry> 303 316 </row> 304 317 … … 311 324 312 325 <row> 313 <entry spanname="span13"><emphasis role="bold">Class 22 — Data Exception</emphasis></entry> 326 <entry spanname="span13"><emphasis role="bold">Class 22 — Problème de 327 données</emphasis></entry> 314 328 </row> 315 329 … … 580 594 581 595 <row> 582 <entry spanname="span13"><emphasis role="bold">Class 23 — Integrity Constraint Violation</emphasis></entry> 596 <entry spanname="span13"><emphasis role="bold">Class 23 — Violation de 597 contrainte d'intégrité</emphasis></entry> 583 598 </row> 584 599 … … 621 636 622 637 <row> 623 <entry spanname="span13"><emphasis role="bold">Class 24 — Invalid Cursor State</emphasis></entry> 638 <entry spanname="span13"><emphasis role="bold">Classe 24 — État de 639 curseur invalide</emphasis></entry> 624 640 </row> 625 641 … … 632 648 633 649 <row> 634 <entry spanname="span13"><emphasis role="bold">Class 25 — Invalid Transaction State</emphasis></entry> 650 <entry spanname="span13"><emphasis role="bold">Class 25 — État de 651 transaction invalide</emphasis></entry> 635 652 </row> 636 653 … … 703 720 704 721 <row> 705 <entry spanname="span13"><emphasis role="bold">Class 26 — Invalid SQL Statement Name</emphasis></entry> 722 <entry spanname="span13"><emphasis role="bold">Classe 26 — Nom 723 d'instruction SQL invalide</emphasis></entry> 706 724 </row> 707 725 … … 714 732 715 733 <row> 716 <entry spanname="span13"><emphasis role="bold">Class 27 — Triggered Data Change Violation</emphasis></entry> 734 <entry spanname="span13"><emphasis role="bold">Classe 27 — Violation de 735 modification de donnée déclenchée</emphasis></entry> 717 736 </row> 718 737 … … 725 744 726 745 <row> 727 <entry spanname="span13"><emphasis role="bold">Class 28 — Invalid Authorization Specification</emphasis></entry> 746 <entry spanname="span13"><emphasis role="bold">Classe 28 — Spécification 747 d'autorisation invalide</emphasis></entry> 728 748 </row> 729 749 … … 736 756 737 757 <row> 738 <entry spanname="span13"><emphasis role="bold">Class 2B — Dependent Privilege Descriptors Still Exist</emphasis></entry> 758 <entry spanname="span13"><emphasis role="bold">Classe 2B — Descripteurs de 759 privilège dépendant toujours existant</emphasis></entry> 739 760 </row> 740 761 … … 753 774 754 775 <row> 755 <entry spanname="span13"><emphasis role="bold">Class 2D — Invalid Transaction Termination</emphasis></entry> 776 <entry spanname="span13"><emphasis role="bold">Classe 2D — Fin de 777 transaction invalide</emphasis></entry> 756 778 </row> 757 779 … … 764 786 765 787 <row> 766 <entry spanname="span13"><emphasis role="bold">Class 2F — SQL Routine Exception</emphasis></entry> 788 <entry spanname="span13"><emphasis role="bold">Classe 2F — Exception dans 789 une routine SQL</emphasis></entry> 767 790 </row> 768 791 … … 799 822 800 823 <row> 801 <entry spanname="span13"><emphasis role="bold">Class 34 — Invalid Cursor Name</emphasis></entry> 824 <entry spanname="span13"><emphasis role="bold">Classe 34 — Nom de curseur 825 invalide</emphasis></entry> 802 826 </row> 803 827 … … 810 834 811 835 <row> 812 <entry spanname="span13"><emphasis role="bold">Class 38 — External Routine Exception</emphasis></entry> 836 <entry spanname="span13"><emphasis role="bold">Classe 38 — Exception de 837 routine externe</emphasis></entry> 813 838 </row> 814 839 … … 845 870 846 871 <row>

