Skip to content

Commit

Permalink
Merge v12 RC1
Browse files Browse the repository at this point in the history
  • Loading branch information
gleu committed Sep 29, 2019
1 parent ad645c4 commit 1f7efc9
Show file tree
Hide file tree
Showing 9 changed files with 503 additions and 429 deletions.
202 changes: 2 additions & 200 deletions postgresql/ecpg.xml
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ EXEC SQL CONNECT TO :cible USER :utilisateur USING :motdepasse;
Les ordres des programmes SQL embarqué sont par défaut exécutés dans
la connexion courante, c'est à dire la plus récemment ouverte. Si
une application a besoin de gérer plusieurs connexions, alors il y
a trois façons de le gérer.
a deux façons de le gérer.
</para>

<para>
Expand Down Expand Up @@ -322,18 +322,6 @@ courante=basetest2 (devrait être basetest2)
courante=basetest1 (sdevrait être basetest1)
</screen>
</para>

<para>
La troisième option sert à déclarer un identifiant SQL lié à la connexion,
par exemple&nbsp;:
<programlisting>
EXEC SQL AT <replaceable>connection-name</replaceable> DECLARE <replaceable>statement-name</replaceable> STATEMENT;
EXEC SQL PREPARE <replaceable>statement-name</replaceable> FROM :<replaceable>dyn-string</replaceable>;
</programlisting>
Une fois que vous avez lié un identifiant à une connexion, exécutez des
requêtes SQL dynamiques en utilisant cette identifiant sans la clause
<literal>AT</literal>.
</para>
</sect2>

<sect2 id="ecpg-disconnect">
Expand Down Expand Up @@ -6546,7 +6534,7 @@ DATABASE <replaceable>connection_target</replaceable>
</varlistentry>

<varlistentry>
<term><replaceable class="PARAMETER">connection_object</replaceable></term>
<term><replaceable class="PARAMETER">connection_name</replaceable></term>
<listitem>
<para>
Un identifiant optionnel pour la connexion, afin qu'on puisse
Expand Down Expand Up @@ -6854,192 +6842,6 @@ EXEC SQL DECLARE cur1 CURSOR FOR stmt1;
</refsect1>
</refentry>

<refentry id="ecpg-sql-declare-statement">
<refnamediv>
<refname>DECLARE STATEMENT</refname>
<refpurpose>déclare un identifiant pour une requête SQL associée à une connexion</refpurpose>
</refnamediv>

<refsynopsisdiv>
<synopsis>
EXEC SQL [ AT <replaceable class="parameter">nom_connexion</replaceable> ] DECLARE <replaceable class="parameter">nom_requête</replaceable> STATEMENT
</synopsis>
</refsynopsisdiv>

<refsect1>
<title>Description</title>

<para>
<command>DECLARE STATEMENT</command> déclare un identifiant pour une
requête SQL à associer à une connexion.
</para>

<para>
<command>DECLARE CURSOR</command> avec un identifiant de requête SQL peut
être écrit avant le <literal>PREPARE</literal>.
</para>
</refsect1>

<refsect1>
<title>Paramètres</title>

<variablelist>
<varlistentry>
<term><replaceable class="parameter">nom_connexion</replaceable></term>
<listitem>
<para>
Un nom de connexion établie avec la commande <command>CONNECT</command>.
</para>
<para>
Si la clause <literal>AT</literal> est omise, l'identifiant de requête SQL est associé
avec la connexion <literal>DEFAULT</literal>.
</para>
</listitem>
</varlistentry>
</variablelist>

<variablelist>
<varlistentry>
<term><replaceable class="parameter">nom_requête</replaceable></term>
<listitem>
<para>
Le nom d'un identifiant de requête SQL, soit comme un identifiant SQL
soit comme une variable hôte.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

<refsect1>
<title>Notes</title>
<para>
La clause <literal>AT</literal> peut être utilisée avec <literal>DECLARE
STATEMENT</literal> ou d'autres requêtes SQL dynamiques. La table
suivante illustre comment cela affecte la base de données sélectionnée.
</para>
<table tocentry="1" id="ecpg-declare-statement-table">
<title>Scénario</title>
<tgroup cols="4">
<thead>
<row>
<entry>
Scénario d'utilisation
</entry>
<entry>
Requête DECLARE
</entry>
<entry>
Autres requêtes dynamiques
</entry>
<entry>
Base cible
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
1
</entry>
<entry>
Sans clause <literal>AT</literal>
</entry>
<entry>
Sans AT
</entry>
<entry>
Connexion par défaut
</entry>
</row>
<row>
<entry>
2
</entry>
<entry>
En utilisant la clause <literal>AT</literal> qui se connecte à
<literal>con1</literal>
</entry>
<entry>
Sans clause AT
</entry>
<entry>
con1
</entry>
</row>
<row>
<entry>
3
</entry>
<entry>
En utilisant la clause <literal>AT</literal> qui se connecte à
<literal>con1</literal>
</entry>
<entry>
En utilisant la clause <literal>AT</literal> qui se connecte à
<literal>con2</literal>
</entry>
<entry>
con1
</entry>
</row>
<row>
<entry>
4
</entry>
<entry>
Sans clause <literal>AT</literal>
</entry>
<entry>
En utilisant la clause <literal>AT</literal> qui se connecte à
<literal>con2</literal>
</entry>
<entry>
con2
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
Dans le scénario 4, <literal>DECLARE STATEMENT</literal> sera ignoré.
</para>
</refsect1>

<refsect1>
<title>Exemples</title>

<programlisting>
EXEC SQL CONNECT TO postgres AS con1;
EXEC SQL AT con1 DECLARE sql_stmt STATEMENT;
EXEC SQL DECLARE cursor_name CURSOR FOR sql_stmt;
EXEC SQL PREPARE sql_stmt FROM :dyn_string;
EXEC SQL OPEN cursor_name;
EXEC SQL FETCH cursor_name INTO :column1;
EXEC SQL CLOSE cursor_name;
</programlisting>
</refsect1>

<refsect1>
<title>Compatibilité</title>

<para>
<command>DECLARE STATEMENT</command> est une extension PostgreSQL du standard SQL
mais peut être utilisé avec Oracle et DB2.
</para>
</refsect1>

<refsect1>
<title>Voir aussi</title>

<simplelist type="inline">
<member><xref linkend="ecpg-sql-connect"/></member>
<member><xref linkend="ecpg-sql-declare"/></member>
<member><xref linkend="ecpg-sql-open"/></member>
</simplelist>
</refsect1>
</refentry>

<refentry id="ecpg-sql-describe">
<refnamediv>
<refname>DESCRIBE</refname>
Expand Down
6 changes: 4 additions & 2 deletions postgresql/fdwhandler.xml
Original file line number Diff line number Diff line change
Expand Up @@ -910,8 +910,10 @@ IsForeignRelUpdatable (Relation rel);
modifient les lignes, une par une. Dans certains cas, cette approche
ligne par ligne est nécessaire mais elle peut s'avérer inefficace. S'il
est possible pour le serveur distant de déterminer les lignes à modifier
sans avoir à les récupérer, et qu'il n'y a pas de triggers locals qui
pourraient affecter l'opération, alors il est possible de s'arranger pour
sans avoir à les récupérer, et qu'il n'y a pas de structures locales qui
pourraient affecter l'opération (triggers locaux au niveau ligne,
colonnes calculées automatiquement ou contraintes <literal>WITH CHECK OPTION</literal>
provenant des vues parents), alors il est possible de s'arranger pour
que l'opération entière soit réalisée sur le serveur distant. Les
interfaces décrites ci-dessous rendent cela possible.
</para>
Expand Down

0 comments on commit 1f7efc9

Please sign in to comment.