G-7330: Always assign values to OUT parameters.
Blocker
Maintainability, Testability
Reason
Marking a parameter for output means that callers will expect its value to be updated with a result from the execution of the procedure. Failing to update the parameter before the procedure returns is surely an error.
Example (bad)
1
2
3
4
5
6
7
8
9
10
11
12
13 | create or replace package body my_package is
procedure greet(
in_name in varchar2
,out_greeting out varchar2 -- violates also G-7150
) is
l_message types_up.text;
co_name constant employees.first_name := in_name;
co_hello constant types_up.text := 'Hello, ';
begin
l_message := co_hello || co_name; -- NOSONAR: G-2135
end greet;
end my_package;
/
|
Example (good)
1
2
3
4
5
6
7
8
9
10
11
12 | create or replace package body my_package is
procedure greet(
in_name in varchar2
,out_greeting out varchar2
) is
co_name constant employees.first_name := in_name;
co_hello constant types_up.text := 'Hello, ';
begin
out_greeting := co_hello || co_name;
end greet;
end my_package;
/
|