Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 56c6be5

Browse files
committed
Doc: improve description of plpgsql's RAISE command.
RAISE accepts either = or := in the USING clause, so fix the syntax synopsis to show that. Rearrange and wordsmith the descriptions of the different syntax variants, in hopes of improving clarity. Igor Gnatyuk, reviewed by Jian He and Laurenz Albe; minor additional wordsmithing by me Discussion: https://postgr.es/m/CAEu6iLvhF5sdGeat2x4_L0FvWW_SiN--ma8ya7CZd-oJoV+yqQ@mail.gmail.com
1 parent 402b586 commit 56c6be5

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

doc/src/sgml/plpgsql.sgml

+35-23
Original file line numberDiff line numberDiff line change
@@ -3815,10 +3815,10 @@ CALL transaction_test2();
38153815
raise errors.
38163816

38173817
<synopsis>
3818-
RAISE <optional> <replaceable class="parameter">level</replaceable> </optional> '<replaceable class="parameter">format</replaceable>' <optional>, <replaceable class="parameter">expression</replaceable> <optional>, ... </optional></optional> <optional> USING <replaceable class="parameter">option</replaceable> = <replaceable class="parameter">expression</replaceable> <optional>, ... </optional> </optional>;
3819-
RAISE <optional> <replaceable class="parameter">level</replaceable> </optional> <replaceable class="parameter">condition_name</replaceable> <optional> USING <replaceable class="parameter">option</replaceable> = <replaceable class="parameter">expression</replaceable> <optional>, ... </optional> </optional>;
3820-
RAISE <optional> <replaceable class="parameter">level</replaceable> </optional> SQLSTATE '<replaceable class="parameter">sqlstate</replaceable>' <optional> USING <replaceable class="parameter">option</replaceable> = <replaceable class="parameter">expression</replaceable> <optional>, ... </optional> </optional>;
3821-
RAISE <optional> <replaceable class="parameter">level</replaceable> </optional> USING <replaceable class="parameter">option</replaceable> = <replaceable class="parameter">expression</replaceable> <optional>, ... </optional>;
3818+
RAISE <optional> <replaceable class="parameter">level</replaceable> </optional> '<replaceable class="parameter">format</replaceable>' <optional>, <replaceable class="parameter">expression</replaceable> <optional>, ... </optional></optional> <optional> USING <replaceable class="parameter">option</replaceable> { = | := } <replaceable class="parameter">expression</replaceable> <optional>, ... </optional> </optional>;
3819+
RAISE <optional> <replaceable class="parameter">level</replaceable> </optional> <replaceable class="parameter">condition_name</replaceable> <optional> USING <replaceable class="parameter">option</replaceable> { = | := } <replaceable class="parameter">expression</replaceable> <optional>, ... </optional> </optional>;
3820+
RAISE <optional> <replaceable class="parameter">level</replaceable> </optional> SQLSTATE '<replaceable class="parameter">sqlstate</replaceable>' <optional> USING <replaceable class="parameter">option</replaceable> { = | := } <replaceable class="parameter">expression</replaceable> <optional>, ... </optional> </optional>;
3821+
RAISE <optional> <replaceable class="parameter">level</replaceable> </optional> USING <replaceable class="parameter">option</replaceable> { = | := } <replaceable class="parameter">expression</replaceable> <optional>, ... </optional>;
38223822
RAISE ;
38233823
</synopsis>
38243824

@@ -3840,8 +3840,9 @@ RAISE ;
38403840
</para>
38413841

38423842
<para>
3843-
After <replaceable class="parameter">level</replaceable> if any,
3844-
you can specify a <replaceable class="parameter">format</replaceable> string
3843+
In the first syntax variant,
3844+
after the <replaceable class="parameter">level</replaceable> if any,
3845+
write a <replaceable class="parameter">format</replaceable> string
38453846
(which must be a simple string literal, not an expression). The
38463847
format string specifies the error message text to be reported.
38473848
The format string can be followed
@@ -3863,7 +3864,27 @@ RAISE NOTICE 'Calling cs_create_job(%)', v_job_id;
38633864
</para>
38643865

38653866
<para>
3866-
You can attach additional information to the error report by writing
3867+
In the second and third syntax variants,
3868+
<replaceable class="parameter">condition_name</replaceable> and
3869+
<replaceable class="parameter">sqlstate</replaceable> specify an
3870+
error condition name or a five-character SQLSTATE code, respectively.
3871+
See <xref linkend="errcodes-appendix"/> for the valid error condition
3872+
names and the predefined SQLSTATE codes.
3873+
</para>
3874+
3875+
<para>
3876+
Here are examples
3877+
of <replaceable class="parameter">condition_name</replaceable>
3878+
and <replaceable class="parameter">sqlstate</replaceable> usage:
3879+
<programlisting>
3880+
RAISE division_by_zero;
3881+
RAISE WARNING SQLSTATE '22012';
3882+
</programlisting>
3883+
</para>
3884+
3885+
<para>
3886+
In any of these syntax variants,
3887+
you can attach additional information to the error report by writing
38673888
<literal>USING</literal> followed by <replaceable
38683889
class="parameter">option</replaceable> = <replaceable
38693890
class="parameter">expression</replaceable> items. Each
@@ -3876,8 +3897,7 @@ RAISE NOTICE 'Calling cs_create_job(%)', v_job_id;
38763897
<term><literal>MESSAGE</literal></term>
38773898
<listitem>
38783899
<para>Sets the error message text. This option can't be used in the
3879-
form of <command>RAISE</command> that includes a format string
3880-
before <literal>USING</literal>.</para>
3900+
first syntax variant, since the message is already supplied.</para>
38813901
</listitem>
38823902
</varlistentry>
38833903

@@ -3900,7 +3920,9 @@ RAISE NOTICE 'Calling cs_create_job(%)', v_job_id;
39003920
<listitem>
39013921
<para>Specifies the error code (SQLSTATE) to report, either by condition
39023922
name, as shown in <xref linkend="errcodes-appendix"/>, or directly as a
3903-
five-character SQLSTATE code.</para>
3923+
five-character SQLSTATE code. This option can't be used in the
3924+
second or third syntax variant, since the error code is already
3925+
supplied.</para>
39043926
</listitem>
39053927
</varlistentry>
39063928

@@ -3932,25 +3954,15 @@ RAISE EXCEPTION 'Nonexistent ID --> %', user_id
39323954
RAISE 'Duplicate user ID: %', user_id USING ERRCODE = 'unique_violation';
39333955
RAISE 'Duplicate user ID: %', user_id USING ERRCODE = '23505';
39343956
</programlisting>
3935-
</para>
3936-
3937-
<para>
3938-
There is a second <command>RAISE</command> syntax in which the main argument
3939-
is the condition name or SQLSTATE to be reported, for example:
3940-
<programlisting>
3941-
RAISE division_by_zero;
3942-
RAISE SQLSTATE '22012';
3943-
</programlisting>
3944-
In this syntax, <literal>USING</literal> can be used to supply a custom
3945-
error message, detail, or hint. Another way to do the earlier
3946-
example is
3957+
Another way to produce the same result is:
39473958
<programlisting>
39483959
RAISE unique_violation USING MESSAGE = 'Duplicate user ID: ' || user_id;
39493960
</programlisting>
39503961
</para>
39513962

39523963
<para>
3953-
Still another variant is to write <literal>RAISE USING</literal> or <literal>RAISE
3964+
As shown in the fourth syntax variant, it is also possible to
3965+
write <literal>RAISE USING</literal> or <literal>RAISE
39543966
<replaceable class="parameter">level</replaceable> USING</literal> and put
39553967
everything else into the <literal>USING</literal> list.
39563968
</para>

0 commit comments

Comments
 (0)