@@ -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>;
38223822RAISE ;
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
39323954RAISE 'Duplicate user ID: %', user_id USING ERRCODE = 'unique_violation';
39333955RAISE '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>
39483959RAISE 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