rspec/rules/S1059/plsql/rule.adoc
Fred Tingaud 16f6c0aecf
Inline adoc when include has no additional value (#1940)
Inline adoc files when they are included exactly once.

Also fix language tags because this inlining gives us better information
on what language the code is written in.
2023-05-25 14:18:12 +02:00

60 lines
1.6 KiB
Plaintext

== Why is this an issue?
Since Oracle 10g, ``++DBMS_UTILITY.FORMAT_ERROR_BACKTRACE++`` is available to get an exception's stack trace, i.e. files and lines that lead up to the exception. When combined with ``++DBMS_UTILITY.FORMAT_ERROR_STACK++``, which contains the exception error code and message, developers are able quickly identify defects.
This rule verifies that whenever either is used in an exception handler, the other is used as well.
=== Noncompliant code example
[source,sql]
----
BEGIN
RAISE_APPLICATION_ERROR(-20000, 'This is an error example');
EXCEPTION
WHEN OTHERS THEN -- Noncompliant; only FORMAT_ERROR_STACK is used
DBMS_OUTPUT.PUT(DBMS_UTILITY.FORMAT_ERROR_STACK); -- "ORA-20000: This is an error example"
DBMS_OUTPUT.PUT_LINE('');
END;
/
----
=== Compliant solution
[source,sql]
----
BEGIN
RAISE_APPLICATION_ERROR(-20000, 'This is an error example');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT(DBMS_UTILITY.FORMAT_ERROR_STACK); -- "ORA-20000: This is an error example"
DBMS_OUTPUT.PUT(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE); -- "ORA-06512: at line 2"
DBMS_OUTPUT.PUT_LINE('');
END;
/
----
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
Use both "FORMAT_ERROR_STACK" and "FORMAT_ERROR_BACKTRACE" in this exception handler.
'''
== Comments And Links
(visible only on this page)
=== on 23 May 2013, 14:05:21 Dinesh Bolkensteyn wrote:
http://rajeshwaranbtech.blogspot.fr/2010/05/dbmsutilityformaterrorbacktrace-10g-new.html
endif::env-github,rspecator-view[]