diff options
Diffstat (limited to 'doc/src/sgml/ref/call.sgml')
-rw-r--r-- | doc/src/sgml/ref/call.sgml | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/doc/src/sgml/ref/call.sgml b/doc/src/sgml/ref/call.sgml new file mode 100644 index 0000000..9e83a77 --- /dev/null +++ b/doc/src/sgml/ref/call.sgml @@ -0,0 +1,133 @@ +<!-- +doc/src/sgml/ref/call.sgml +PostgreSQL documentation +--> + +<refentry id="sql-call"> + <indexterm zone="sql-call"> + <primary>CALL</primary> + </indexterm> + + <refmeta> + <refentrytitle>CALL</refentrytitle> + <manvolnum>7</manvolnum> + <refmiscinfo>SQL - Language Statements</refmiscinfo> + </refmeta> + + <refnamediv> + <refname>CALL</refname> + <refpurpose>invoke a procedure</refpurpose> + </refnamediv> + + <refsynopsisdiv> +<synopsis> +CALL <replaceable class="parameter">name</replaceable> ( [ <replaceable class="parameter">argument</replaceable> ] [, ...] ) +</synopsis> + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + + <para> + <command>CALL</command> executes a procedure. + </para> + + <para> + If the procedure has any output parameters, then a result row will be + returned, containing the values of those parameters. + </para> + </refsect1> + + <refsect1> + <title>Parameters</title> + + <variablelist> + <varlistentry> + <term><replaceable class="parameter">name</replaceable></term> + <listitem> + <para> + The name (optionally schema-qualified) of the procedure. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">argument</replaceable></term> + <listitem> + <para> + An argument expression for the procedure call. + </para> + + <para> + Arguments can include parameter names, using the syntax + <literal><replaceable class="parameter">name</replaceable> => <replaceable class="parameter">value</replaceable></literal>. + This works the same as in ordinary function calls; see + <xref linkend="sql-syntax-calling-funcs"/> for details. + </para> + + <para> + Arguments must be supplied for all procedure parameters that lack + defaults, including <literal>OUT</literal> parameters. However, + arguments matching <literal>OUT</literal> parameters are not evaluated, + so it's customary to just write <literal>NULL</literal> for them. + (Writing something else for an <literal>OUT</literal> parameter + might cause compatibility problems with + future <productname>PostgreSQL</productname> versions.) + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Notes</title> + + <para> + The user must have <literal>EXECUTE</literal> privilege on the procedure in + order to be allowed to invoke it. + </para> + + <para> + To call a function (not a procedure), use <command>SELECT</command> instead. + </para> + + <para> + If <command>CALL</command> is executed in a transaction block, then the + called procedure cannot execute transaction control statements. + Transaction control statements are only allowed if <command>CALL</command> + is executed in its own transaction. + </para> + + <para> + <application>PL/pgSQL</application> handles output parameters + in <command>CALL</command> commands differently; + see <xref linkend="plpgsql-statements-calling-procedure"/>. + </para> + </refsect1> + + <refsect1> + <title>Examples</title> +<programlisting> +CALL do_db_maintenance(); +</programlisting> + </refsect1> + + <refsect1> + <title>Compatibility</title> + + <para> + <command>CALL</command> conforms to the SQL standard, + except for the handling of output parameters. The standard + says that users should write variables to receive the values + of output parameters. + </para> + </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createprocedure"/></member> + </simplelist> + </refsect1> +</refentry> |