root/traduc/branches/bv747/manuel/ref/create_language.sgml

Revision 13, 9.1 kB (checked in by gleu, 3 years ago)

Suite de l'import pour le passage CVS à SVN.

Line 
1 <!--
2 $Header: /var/lib/cvs/pgsql-fr/sgml/ref/create_language.sgml,v 1.6.2.3 2005/07/15 06:33:53 guillaume Exp $
3 PostgreSQL documentation
4 -->
5
6 <refentry id="SQL-CREATELANGUAGE">
7  <refmeta>
8   <refentrytitle id="sql-createlanguage-title">CREATE LANGUAGE</refentrytitle>
9   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
10  </refmeta>
11
12  <refnamediv>
13   <refname>CREATE LANGUAGE</refname>
14   <refpurpose>définit un nouveau langage de procédures</refpurpose>
15  </refnamediv>
16
17  <indexterm zone="sql-createlanguage">
18   <primary>CREATE LANGUAGE</primary>
19  </indexterm>
20
21  <refsynopsisdiv>
22 <synopsis>
23 CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE <replaceable
24 class="parameter">nom</replaceable>
25     HANDLER <replaceable class="parameter">gestionnaire_appel</replaceable> [
26 VALIDATOR <replaceable>fonction_validation</replaceable> ]
27 </synopsis>
28  </refsynopsisdiv>
29
30  <refsect1 id="sql-createlanguage-description">
31   <title>Description</title>
32
33   <para>
34    En utilisant <command>CREATE LANGUAGE</command>, un utilisateur
35    <productname>PostgreSQL</productname> peut enregistrer un nouveau langage de
36    procédure sur une base de données <productname>PostgreSQL</productname>. En
37    conséquence, les fonctions et les procédures de déclencheurs peuvent être
38    définies dans ce nouveau langage. L'utilisateur doit avoir les droits de
39    superutilisateur de <productname>PostgreSQL</productname> pour enregistrer un
40    nouveau langage.
41   </para>
42
43   <para>
44    <command>CREATE LANGUAGE</command> associe réellement le nom du langage avec
45    un gestionnaire d'appels qui est responsable de l'exécution des fonctions
46    écrites dans le langage. Référez-vous à <xref linkend="xfunc"> pour plus
47    d'informations sur les gestionnaires d'appels.
48   </para>
49
50   <para>
51    Notez que les langages de procédures sont locaux au niveau des bases de
52    données individuelles. Pour rendre disponible un langage dans toutes les
53    bases de données par défaut, il devrait être installé dans la base de données
54    <literal>template1</literal>.
55   </para>
56  </refsect1>
57
58  <refsect1 id="sql-createlanguage-parameters">
59   <title>Paramètres</title>
60
61    <variablelist>
62     <varlistentry>
63      <term><literal>TRUSTED</literal></term>
64
65      <listitem>
66       <para>
67        <literal>TRUSTED</literal> spécifie que le gestionnaire d'appels du
68        langage est sûr, c'est-à-dire qu'il n'offre pas de fonctions surpassant
69        les restrictions d'accès aux utilisateurs. Si ce mot clé est omis à
70        l'enregistrement de ce langage, seuls les utilisateurs disposant du droit
71        superutilisateur de <productname>PostgreSQL</productname> peuvent
72        utiliser ce langage pour créer de nouvelles fonctions.
73       </para>
74      </listitem>
75     </varlistentry>
76
77     <varlistentry>
78      <term><literal>PROCEDURAL</literal></term>
79
80      <listitem>
81       <para>
82        Aucune influence.
83       </para>
84      </listitem>
85     </varlistentry>
86
87     <varlistentry>
88      <term><replaceable class="parameter">nom</replaceable></term>
89
90      <listitem>
91       <para>
92        Le nom du nouveau langage de procédures. Le nom du langage n'est pas
93        sensible à la casse. Le nom doit être unique parmi les langages de la
94        base de données.
95       </para>
96
97       <para>
98        Pour une compatibilité descendante, le nom doit être entouré par des
99        guillemets simples.
100       </para>
101      </listitem>
102     </varlistentry>
103
104     <varlistentry>
105      <term><literal>HANDLER</literal> <replaceable
106        class="parameter">gestionnaire_appel</replaceable></term>
107
108      <listitem>
109       <para>
110        <replaceable class="parameter">gestionnaire_appels</replaceable> est le
111        nom d'une fonction précédemment enregistrée qui sera appelée pour
112        exécuter les fonctions du langage de procédures. Le gestionnaire d'appels
113        pour un langage de procédures doit être écrit dans un langage compilé
114        comme le C avec la convention d'appel version 1 et enregistré sur
115        <productname>PostgreSQL</productname> comme une fonction ne prenant aucun
116        argument et retournant le type <type>language_handler</type>, un type
117        spécifiquement utilisé pour identifier la fonction comme gestionnaire
118        d'appels.
119       </para>
120      </listitem>
121     </varlistentry>
122
123     <varlistentry>
124      <term><literal>VALIDATOR</literal> <replaceable
125        class="parameter">fonction_validation</replaceable></term>
126
127      <listitem>
128       <para>
129        <replaceable class="parameter">fonction_validation</replaceable> est le
130        nom d'une fonction précédemment enregistrée qui sera appelée lorsqu'une
131        nouveau fonction sera créée avec ce langage, pour valider la nouvelle
132        fonction. Si aucune fonction de validation n'est spécifiée, alors une
133        nouvelle fonction ne sera pas vérifiée à sa création. La fonction de
134        validation prend un argument de type <type>oid</type>, qui sera l'OID de
135        la fonction à créer, et renverra typiquement <type>void</>.
136       </para>
137
138       <para>
139        Une fonction de validation inspecterait typiquement le corps de la
140        fonction pour s'assurer de la justesse syntaxique mais il regarderait
141        aussi d'autres propriétés de la fonction, par exemple si le langage ne
142        peut pas gérer certains types d'argument. Pour signaler une erreur, la
143        fonction de validation devrait utiliser la fonction
144        <function>ereport()</function>. La valeur de retour de la fonction est
145        ignorée.
146       </para>
147      </listitem>
148     </varlistentry>
149    </variablelist>
150  </refsect1>
151
152  <refsect1 id="sql-createlanguage-notes">
153   <title>Notes</title>
154
155   <para>
156    Cette commande ne devrait normalement pas être exécutée directement par les
157    utilisateurs. Pour les langages de procédure fournis dans la distribution
158    <productname>PostgreSQL</productname>, le programme <xref
159    linkend="app-createlang"> devrait être utilisé, qui installera aussi le bon
160    gestionnaire d'appels. (<command>createlang</command> appellera
161    <command>CREATE LANGUAGE</command> en interne.)
162   </para>
163
164   <para>
165    Dans les versions de <productname>PostgreSQL</productname> antérieures à la
166    7.3, il était nécessaire de déclarer les fonctions du gestionnaire comme
167    renvoyant le type <type>opaque</>, plutôt que <type>language_handler</>.
168    Pour supporter le chargement des anciens fichiers de sauvegarde,
169    <command>CREATE LANGUAGE</> acceptera une fonction déclarée renvoyant le type
170    <type>opaque</>, mais affichera un message d'avertissement et modifié le type
171    renvoyé par la fonction en <type>language_handler</>.
172   </para>
173
174   <para>
175    Utilisez la commande <xref linkend="sql-createfunction"
176    endterm="sql-createfunction-title"> pour créer une nouvelle fonction.
177   </para>
178
179   <para>
180    Utilisez <xref linkend="sql-droplanguage" endterm="sql-droplanguage-title">,
181    ou encore mieux le programme  <xref linkend="app-droplang">, pour supprimer
182    les langages de procédures.
183   </para>
184
185   <para>
186    Le catalogue système <classname>pg_language</classname> (voir <xref
187    linkend="catalog-pg-language">) enregistre des informations sur les langages
188    actuellement installés. De plus, <command>createlang</command> a une option
189    pour lister les langages installés.
190   </para>
191
192   <para>
193    La définition d'un langage de procédures ne peut pas être modifiée une fois
194    qu'il a été créé, à l'exception des droits.
195   </para>
196
197   <para>
198    Pour être capable d'utiliser un langage de procédures, un utilisateur doit
199    avoir le droit <literal>USAGE</literal>. Le programme
200    <command>createlang</command> donne automatiquement les droits à toute
201    personne si le langage est « de confiance ».
202   </para>
203  </refsect1>
204
205  <refsect1 id="sql-createlanguage-examples">
206   <title>Exemples</title>
207
208   <para>
209    Les deux commandes suivantes exécutées en séquence enregistreront un nouveau
210    langage de procédures et le gestionnaire d'appels associé.
211 <programlisting>
212 CREATE FUNCTION plsample_call_handler() RETURNS language_handler
213     AS '$libdir/plsample'
214     LANGUAGE C;
215 CREATE LANGUAGE plsample
216     HANDLER plsample_call_handler;
217 </programlisting>
218   </para>
219  </refsect1>
220
221  <refsect1 id="sql-createlanguage-compat">
222   <title>Compatibilité</title>
223
224   <para>
225    <command>CREATE LANGUAGE</command> est un extension de
226    <productname>PostgreSQL</productname>.
227   </para>
228  </refsect1>
229
230  <refsect1>
231   <title>Voir aussi</title>
232
233   <simplelist type="inline">
234    <member><xref linkend="sql-alterlanguage" endterm="sql-alterlanguage-title"></member>
235    <member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"></member>
236    <member><xref linkend="sql-droplanguage" endterm="sql-droplanguage-title"></member>
237    <member><xref linkend="sql-grant" endterm="sql-grant-title"></member>
238    <member><xref linkend="sql-revoke" endterm="sql-revoke-title"></member>
239    <member><xref linkend="app-createlang"></member>
240    <member><xref linkend="app-droplang"></member>
241   </simplelist>
242  </refsect1>
243 </refentry>
244
245 <!-- Keep this comment at the end of the file
246 Local variables:
247 mode: sgml
248 sgml-omittag:nil
249 sgml-shorttag:t
250 sgml-minimize-attributes:nil
251 sgml-always-quote-attributes:t
252 sgml-indent-step:1
253 sgml-indent-data:t
254 sgml-parent-document:nil
255 sgml-default-dtd-file:"../reference.ced"
256 sgml-exposed-tags:nil
257 sgml-local-catalogs:"/usr/lib/sgml/catalog"
258 sgml-local-ecat-files:nil
259 End:
260 -->
Note: See TracBrowser for help on using the browser.