@@ -3815,10 +3815,10 @@ CALL transaction_test2();
3815
3815
raise errors.
3816
3816
3817
3817
<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>;
3822
3822
RAISE ;
3823
3823
</synopsis>
3824
3824
@@ -3840,8 +3840,9 @@ RAISE ;
3840
3840
</para>
3841
3841
3842
3842
<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
3845
3846
(which must be a simple string literal, not an expression). The
3846
3847
format string specifies the error message text to be reported.
3847
3848
The format string can be followed
@@ -3863,7 +3864,27 @@ RAISE NOTICE 'Calling cs_create_job(%)', v_job_id;
3863
3864
</para>
3864
3865
3865
3866
<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
3867
3888
<literal>USING</literal> followed by <replaceable
3868
3889
class="parameter">option</replaceable> = <replaceable
3869
3890
class="parameter">expression</replaceable> items. Each
@@ -3876,8 +3897,7 @@ RAISE NOTICE 'Calling cs_create_job(%)', v_job_id;
3876
3897
<term><literal>MESSAGE</literal></term>
3877
3898
<listitem>
3878
3899
<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>
3881
3901
</listitem>
3882
3902
</varlistentry>
3883
3903
@@ -3900,7 +3920,9 @@ RAISE NOTICE 'Calling cs_create_job(%)', v_job_id;
3900
3920
<listitem>
3901
3921
<para>Specifies the error code (SQLSTATE) to report, either by condition
3902
3922
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>
3904
3926
</listitem>
3905
3927
</varlistentry>
3906
3928
@@ -3932,25 +3954,15 @@ RAISE EXCEPTION 'Nonexistent ID --> %', user_id
3932
3954
RAISE 'Duplicate user ID: %', user_id USING ERRCODE = 'unique_violation';
3933
3955
RAISE 'Duplicate user ID: %', user_id USING ERRCODE = '23505';
3934
3956
</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:
3947
3958
<programlisting>
3948
3959
RAISE unique_violation USING MESSAGE = 'Duplicate user ID: ' || user_id;
3949
3960
</programlisting>
3950
3961
</para>
3951
3962
3952
3963
<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
3954
3966
<replaceable class="parameter">level</replaceable> USING</literal> and put
3955
3967
everything else into the <literal>USING</literal> list.
3956
3968
</para>
0 commit comments