From cc5558a413891d032796da17bd17d9874311aea0 Mon Sep 17 00:00:00 2001
From: Philipp Salvisberg
Date: Tue, 19 Mar 2024 11:03:36 +0000
Subject: [PATCH] Deployed 0cb490e5 to main with MkDocs 1.3.1 and mike 1.1.2
---
.../1-general/g-1010/index.html | 32 +-
.../1-general/g-1020/index.html | 40 +--
.../1-general/g-1030/index.html | 16 +-
.../1-general/g-1040/index.html | 20 +-
.../1-general/g-1050/index.html | 16 +-
.../1-general/g-1060/index.html | 8 +-
.../1-general/g-1070/index.html | 16 +-
.../1-general/g-1080/index.html | 10 +-
.../1-general/g-2110/index.html | 8 +-
.../1-general/g-2120/index.html | 8 +-
.../1-general/g-2130/index.html | 8 +-
.../1-general/g-2135/index.html | 12 +-
.../1-general/g-2140/index.html | 8 +-
.../1-general/g-2145/index.html | 8 +-
.../1-general/g-2150/index.html | 8 +-
.../1-general/g-2160/index.html | 10 +-
.../1-general/g-2170/index.html | 16 +-
.../1-general/g-2180/index.html | 16 +-
.../1-general/g-2185/index.html | 16 +-
.../1-general/g-2190/index.html | 8 +-
.../2-numeric-data-types/g-2210/index.html | 8 +-
.../2-numeric-data-types/g-2220/index.html | 8 +-
.../2-numeric-data-types/g-2230/index.html | 8 +-
.../3-character-data-types/g-2310/index.html | 12 +-
.../3-character-data-types/g-2320/index.html | 8 +-
.../3-character-data-types/g-2330/index.html | 12 +-
.../3-character-data-types/g-2340/index.html | 8 +-
.../4-boolean-data-types/g-2410/index.html | 20 +-
.../5-large-objects/g-2510/index.html | 12 +-
.../6-cursor-variables/g-2610/index.html | 10 +-
.../3-dml-and-sql/1-general/g-3110/index.html | 18 +-
.../3-dml-and-sql/1-general/g-3115/index.html | 8 +-
.../3-dml-and-sql/1-general/g-3120/index.html | 34 +--
.../3-dml-and-sql/1-general/g-3130/index.html | 16 +-
.../3-dml-and-sql/1-general/g-3140/index.html | 16 +-
.../3-dml-and-sql/1-general/g-3145/index.html | 8 +-
.../3-dml-and-sql/1-general/g-3150/index.html | 8 +-
.../3-dml-and-sql/1-general/g-3160/index.html | 18 +-
.../3-dml-and-sql/1-general/g-3170/index.html | 16 +-
.../3-dml-and-sql/1-general/g-3180/index.html | 12 +-
.../3-dml-and-sql/1-general/g-3182/index.html | 8 +-
.../3-dml-and-sql/1-general/g-3183/index.html | 8 +-
.../3-dml-and-sql/1-general/g-3185/index.html | 28 +-
.../3-dml-and-sql/1-general/g-3190/index.html | 14 +-
.../3-dml-and-sql/1-general/g-3195/index.html | 12 +-
.../2-bulk-operations/g-3210/index.html | 12 +-
.../2-bulk-operations/g-3220/index.html | 22 +-
.../3-transaction-control/g-3310/index.html | 12 +-
.../3-transaction-control/g-3320/index.html | 18 +-
.../3-transaction-control/g-3330/index.html | 14 +-
.../1-cursor/g-4110/index.html | 8 +-
.../1-cursor/g-4120/index.html | 12 +-
.../1-cursor/g-4130/index.html | 12 +-
.../1-cursor/g-4140/index.html | 20 +-
.../g-4210/index.html | 40 ++-
.../g-4220/index.html | 20 +-
.../g-4230/index.html | 8 +-
.../g-4240/index.html | 20 +-
.../g-4250/index.html | 12 +-
.../g-4260/index.html | 8 +-
.../g-4270/index.html | 8 +-
.../3-flow-control/g-4310/index.html | 24 +-
.../3-flow-control/g-4320/index.html | 72 +++--
.../3-flow-control/g-4325/index.html | 16 +-
.../3-flow-control/g-4330/index.html | 12 +-
.../3-flow-control/g-4340/index.html | 12 +-
.../3-flow-control/g-4350/index.html | 16 +-
.../3-flow-control/g-4360/index.html | 8 +-
.../3-flow-control/g-4365/index.html | 8 +-
.../3-flow-control/g-4370/index.html | 36 +--
.../3-flow-control/g-4375/index.html | 12 +-
.../3-flow-control/g-4380/index.html | 12 +-
.../3-flow-control/g-4385/index.html | 20 +-
.../3-flow-control/g-4387/index.html | 20 +-
.../3-flow-control/g-4390/index.html | 12 +-
.../3-flow-control/g-4395/index.html | 8 +-
.../5-exception-handling/g-5010/index.html | 16 +-
.../5-exception-handling/g-5020/index.html | 8 +-
.../5-exception-handling/g-5030/index.html | 16 +-
.../5-exception-handling/g-5040/index.html | 16 +-
.../5-exception-handling/g-5050/index.html | 8 +-
.../5-exception-handling/g-5060/index.html | 24 +-
.../5-exception-handling/g-5070/index.html | 8 +-
.../5-exception-handling/g-5080/index.html | 12 +-
.../6-dynamic-sql/g-6010/index.html | 8 +-
.../6-dynamic-sql/g-6020/index.html | 8 +-
.../1-general/g-7110/index.html | 10 +-
.../1-general/g-7120/index.html | 18 +-
.../1-general/g-7125/index.html | 8 +-
.../1-general/g-7130/index.html | 22 +-
.../1-general/g-7140/index.html | 12 +-
.../1-general/g-7150/index.html | 4 +-
.../1-general/g-7160/index.html | 20 +-
.../1-general/g-7170/index.html | 44 +--
.../2-packages/g-7220/index.html | 12 +-
.../2-packages/g-7230/index.html | 8 +-
.../2-packages/g-7250/index.html | 12 +-
.../3-procedures/g-7310/index.html | 8 +-
.../3-procedures/g-7320/index.html | 8 +-
.../3-procedures/g-7330/index.html | 12 +-
.../4-functions/g-7410/index.html | 8 +-
.../4-functions/g-7420/index.html | 8 +-
.../4-functions/g-7430/index.html | 16 +-
.../4-functions/g-7440/index.html | 8 +-
.../4-functions/g-7450/index.html | 8 +-
.../4-functions/g-7460/index.html | 10 +-
.../g-7510/index.html | 8 +-
.../7-triggers/g-7710/index.html | 20 +-
.../7-triggers/g-7720/index.html | 8 +-
.../7-triggers/g-7730/index.html | 12 +-
.../7-triggers/g-7740/index.html | 20 +-
.../8-sequences/g-7810/index.html | 8 +-
.../9-sql-macros/g-7910/index.html | 8 +-
.../g-8110/index.html | 8 +-
.../g-8120/index.html | 14 +-
.../g-8210/index.html | 12 +-
.../g-8310/index.html | 16 +-
.../g-8410/index.html | 16 +-
.../g-8510/index.html | 8 +-
.../9-function-usage/g-9010/index.html | 8 +-
.../9-function-usage/g-9020/index.html | 10 +-
.../9-function-usage/g-9030/index.html | 8 +-
.../9-function-usage/g-9040/index.html | 8 +-
.../PLSQL-and-SQL-Coding-Guidelines.pdf | Bin 3572997 -> 3583652 bytes
main/search/search_index.json | 2 +-
main/sitemap.xml | 276 +++++++++---------
main/sitemap.xml.gz | Bin 1275 -> 1275 bytes
main/stylesheets/extra.css | 4 +
128 files changed, 997 insertions(+), 1005 deletions(-)
diff --git a/main/4-language-usage/1-general/g-1010/index.html b/main/4-language-usage/1-general/g-1010/index.html
index 926978e0..1377a9f5 100644
--- a/main/4-language-usage/1-general/g-1010/index.html
+++ b/main/4-language-usage/1-general/g-1010/index.html
@@ -3474,14 +3474,14 @@ Example (bad)
8
9
10begin
- begin
- null;
- end;
-
- begin
- null;
- end;
-end;
+ begin
+ null;
+ end;
+
+ begin
+ null;
+ end;
+end;
/
|
Example (good)
@@ -3497,16 +3497,16 @@ Example (good)
10
11
12begin
- <<prepare_data>>
- begin
+ <<prepare_data>>
+ begin
null;
- end prepare_data;
-
- <<process_data>>
- begin
+ end prepare_data;
+
+ <<process_data>>
+ begin
null;
- end process_data;
-end good;
+ end process_data;
+end good;
/
|
diff --git a/main/4-language-usage/1-general/g-1020/index.html b/main/4-language-usage/1-general/g-1020/index.html
index 4eaffe32..47d96920 100644
--- a/main/4-language-usage/1-general/g-1020/index.html
+++ b/main/4-language-usage/1-general/g-1020/index.html
@@ -3511,31 +3511,31 @@ Example (bad)
<<prepare_data>>
begin
null;
- end;
-
+ end;
+
<<process_data>>
begin
null;
- end;
-
+ end;
+
i := co_min_value;
<<while_loop>>
while (i <= co_max_value)
loop
i := i + co_increment;
- end loop;
-
+ end loop;
+
<<basic_loop>>
loop
exit basic_loop when true;
- end loop;
-
+ end loop;
+
<<for_loop>>
for i in co_min_value..co_max_value
loop
sys.dbms_output.put_line(i);
- end loop;
-end;
+ end loop;
+end;
/
Example (good)
@@ -3582,31 +3582,31 @@ Example (good)
<<prepare_data>>
begin
null;
- end prepare_data;
-
+ end prepare_data;
+
<<process_data>>
begin
null;
- end process_data;
-
+ end process_data;
+
i := co_min_value;
<<while_loop>>
while (i <= co_max_value)
loop
i := i + co_increment;
- end loop while_loop;
-
+ end loop while_loop;
+
<<basic_loop>>
loop
exit basic_loop when true;
- end loop basic_loop;
-
+ end loop basic_loop;
+
<<for_loop>>
for i in co_min_value..co_max_value
loop
sys.dbms_output.put_line(i);
- end loop for_loop;
-end;
+ end loop for_loop;
+end;
/
diff --git a/main/4-language-usage/1-general/g-1030/index.html b/main/4-language-usage/1-general/g-1030/index.html
index c5490aa0..0b34e74a 100644
--- a/main/4-language-usage/1-general/g-1030/index.html
+++ b/main/4-language-usage/1-general/g-1030/index.html
@@ -3485,10 +3485,10 @@ Example (bad)
19create or replace package body my_package is
procedure my_proc is
l_last_name employees.last_name%type;
- l_first_name employees.first_name%type;
- co_department_id constant departments.department_id%type := 10;
- e_good exception;
- begin
+ l_first_name employees.first_name%type;
+ co_department_id constant departments.department_id%type := 10;
+ e_good exception;
+ begin
select e.last_name
into l_last_name
from employees e
@@ -3526,15 +3526,15 @@ Example (good)
procedure my_proc is
l_last_name employees.last_name%type;
co_department_id constant departments.department_id%type := 10;
- e_good exception;
- begin
+ e_good exception;
+ begin
select e.last_name
into l_last_name
from employees e
where e.department_id = co_department_id;
- raise e_good;
- exception
+ raise e_good;
+ exception
when no_data_found then
null; -- handle_no_data_found;
when too_many_rows then
diff --git a/main/4-language-usage/1-general/g-1040/index.html b/main/4-language-usage/1-general/g-1040/index.html
index 30cf48d2..b0cfa2e7 100644
--- a/main/4-language-usage/1-general/g-1040/index.html
+++ b/main/4-language-usage/1-general/g-1040/index.html
@@ -3507,23 +3507,23 @@ Example (bad)
41
| declare
co_dept_purchasing constant departments.department_id%type := 30;
begin
- if 2 = 3 then -- dead code detection works with literals only
- null; -- some dead code here
+ if 2 = 3 then -- dead code detection works with literals only
+ null; -- some dead code here
end if;
null; -- some enabled code here
<<my_loop>>
loop
- exit my_loop when true;
- null; -- some dead code here
+ exit my_loop when true;
+ null; -- some dead code here
end loop my_loop;
null; -- some other enabled code here
case
- when 1 = 1 and 'x' = 'y' then -- dead code detection works with literals only
- null; -- some dead code here
+ when 1 = 1 and 'x' = 'y' then -- dead code detection works with literals only
+ null; -- some dead code here
else
null; -- some further enabled code here
end case;
@@ -3534,15 +3534,15 @@ Example (bad)
from employees
where department_id = co_dept_purchasing
or commission_pct is not null
- and 5 = 6 -- dead code detection works with literals only
- )
+ and 5 = 6 -- dead code detection works with literals only
+ )
-- "or commission_pct is not null" is dead code
loop
sys.dbms_output.put_line(r_emp.last_name);
end loop my_loop2;
- return;
- null; -- some dead code here
+ return;
+ null; -- some dead code here
end;
/
|
diff --git a/main/4-language-usage/1-general/g-1050/index.html b/main/4-language-usage/1-general/g-1050/index.html
index 5d9d3338..ac5cee52 100644
--- a/main/4-language-usage/1-general/g-1050/index.html
+++ b/main/4-language-usage/1-general/g-1050/index.html
@@ -3472,10 +3472,10 @@ Example (bad)
4
5
6begin
- some_api.setup(in_department_id => 10);
- some_api.process(in_department_id => 10);
- some_api.teardown(in_department_id => 10);
-end;
+ some_api.setup(in_department_id => 10);
+ some_api.process(in_department_id => 10);
+ some_api.teardown(in_department_id => 10);
+end;
/
|
Example (good)
@@ -3495,10 +3495,10 @@ Example (good)
/
begin
- some_api.setup(in_department_id => constants_up.co_dept_admin);
- some_api.process(in_department_id => constants_up.co_dept_admin);
- some_api.teardown(in_department_id => constants_up.co_dept_admin);
-end;
+ some_api.setup(in_department_id => constants_up.co_dept_admin);
+ some_api.process(in_department_id => constants_up.co_dept_admin);
+ some_api.teardown(in_department_id => constants_up.co_dept_admin);
+end;
/
diff --git a/main/4-language-usage/1-general/g-1060/index.html b/main/4-language-usage/1-general/g-1060/index.html
index 2142bd84..8a13071a 100644
--- a/main/4-language-usage/1-general/g-1060/index.html
+++ b/main/4-language-usage/1-general/g-1060/index.html
@@ -3483,13 +3483,13 @@ Example (bad)
employee_id
,last_name
,first_name
- ,rid
- )
+ ,rid
+ )
select employee_id
,last_name
,first_name
- ,rowid
- from employees;
+ ,rowid
+ from employees;
end;
/
diff --git a/main/4-language-usage/1-general/g-1070/index.html b/main/4-language-usage/1-general/g-1070/index.html
index b9cada7a..3aef7ee6 100644
--- a/main/4-language-usage/1-general/g-1070/index.html
+++ b/main/4-language-usage/1-general/g-1070/index.html
@@ -3471,10 +3471,10 @@ Example (bad)
5
6
7begin
- /* comment one -- nested comment two */
- null;
- -- comment three /* nested comment four */
- null;
+ /* comment one -- nested comment two */
+ null;
+ -- comment three /* nested comment four */
+ null;
end;
/
|
@@ -3486,10 +3486,10 @@ Example (good)
5
6
7begin
- /* comment one, comment two */
- null;
- -- comment three, comment four
- null;
+ /* comment one, comment two */
+ null;
+ -- comment three, comment four
+ null;
end;
/
|
diff --git a/main/4-language-usage/1-general/g-1080/index.html b/main/4-language-usage/1-general/g-1080/index.html
index b7328a8e..9322ede4 100644
--- a/main/4-language-usage/1-general/g-1080/index.html
+++ b/main/4-language-usage/1-general/g-1080/index.html
@@ -3485,9 +3485,9 @@ Example (bad)
,emp.salary
,emp.hire_date
from employees emp
- where emp.salary > co_max_salary
- or emp.salary > co_max_salary
- order by emp.last_name,emp.first_name;
+ where emp.salary > co_max_salary
+ or emp.salary > co_max_salary
+ order by emp.last_name,emp.first_name;
end;
/
@@ -3511,8 +3511,8 @@ Example (good)
,emp.salary
,emp.hire_date
from employees emp
- where emp.salary > co_max_salary
- order by emp.last_name,emp.first_name;
+ where emp.salary > co_max_salary
+ order by emp.last_name,emp.first_name;
end;
/
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2110/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2110/index.html
index 0e0b10be..c15cbb07 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2110/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2110/index.html
@@ -3484,8 +3484,8 @@ Example (bad)
16
17create or replace package body my_package is
procedure my_proc is
- l_last_name varchar2(20 char);
- co_first_row constant integer := 1;
+ l_last_name varchar2(20 char);
+ co_first_row constant integer := 1;
begin
select e.last_name
into l_last_name
@@ -3519,8 +3519,8 @@ Example (good)
16
17
| create or replace package body my_package is
procedure my_proc is
- l_last_name employees.last_name%type;
- co_first_row constant integer := 1;
+ l_last_name employees.last_name%type;
+ co_first_row constant integer := 1;
begin
select e.last_name
into l_last_name
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2120/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2120/index.html
index 049ee639..6a6558d9 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2120/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2120/index.html
@@ -3478,8 +3478,8 @@ Example (bad)
9
10
| create or replace package body my_package is
procedure my_proc is
- subtype big_string_type is varchar2(1000 char);
- l_note big_string_type;
+ subtype big_string_type is varchar2(1000 char);
+ l_note big_string_type;
begin
l_note := some_function();
do_something(l_note);
@@ -3508,8 +3508,8 @@ Example (good)
create or replace package body my_package is
procedure my_proc is
- l_note types_up.big_string_type;
- begin
+ l_note types_up.big_string_type;
+ begin
l_note := some_function();
do_something(l_note);
end my_proc;
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2130/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2130/index.html
index bda0ce9c..f02cf1f6 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2130/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2130/index.html
@@ -3504,8 +3504,8 @@ Example (bad)
8
9
| create or replace package body my_package is
procedure my_proc is
- l_note varchar2(1000 char);
- begin
+ l_note varchar2(1000 char);
+ begin
l_note := some_function();
do_something(l_note);
end my_proc;
@@ -3533,8 +3533,8 @@ Example (good)
create or replace package body my_package is
procedure my_proc is
- l_note types_up.big_string_type;
- begin
+ l_note types_up.big_string_type;
+ begin
l_note := some_function();
do_something(l_note);
end my_proc;
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2135/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2135/index.html
index 01edd899..9b0b61fb 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2135/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2135/index.html
@@ -3498,8 +3498,8 @@ Example (bad)
from employees emp
where emp.employee_id = co_employee_id;
- l_message := co_hello || l_last_name;
- exception
+ l_message := co_hello || l_last_name;
+ exception
when no_data_found then
null; -- handle_no_data_found;
when too_many_rows then
@@ -3543,10 +3543,10 @@ Example (good)
from employees emp
where emp.employee_id = co_employee_id;
- l_message := co_hello || l_last_name;
-
- message_api.send_message(l_message);
- exception
+ l_message := co_hello || l_last_name;
+
+ message_api.send_message(l_message);
+ exception
when no_data_found then
null; -- handle_no_data_found;
when too_many_rows then
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2140/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2140/index.html
index fcb429eb..9a746f75 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2140/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2140/index.html
@@ -3472,8 +3472,8 @@ Example (bad)
4
5
6
| declare
- l_note big_string_type := null;
-begin
+ l_note big_string_type := null;
+begin
sys.dbms_output.put_line(l_note);
end;
/
@@ -3485,8 +3485,8 @@ Example (good)
4
5
6
| declare
- l_note big_string_type;
-begin
+ l_note big_string_type;
+begin
sys.dbms_output.put_line(l_note);
end;
/
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2145/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2145/index.html
index b6ad7c95..c8dfa978 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2145/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2145/index.html
@@ -3484,8 +3484,8 @@ Example (bad)
begin
l_function_result := maintenance.get_config(co_parallel_degree);
if l_function_result is not null then
- l_parallel_degree := l_parallel_degree;
- do_something(l_parallel_degree);
+ l_parallel_degree := l_parallel_degree;
+ do_something(l_parallel_degree);
end if;
end;
/
@@ -3509,8 +3509,8 @@ Example (good)
begin
l_function_result := maintenance.get_config(co_parallel_degree);
if l_function_result is not null then
- l_parallel_degree := l_function_result;
- do_something(l_parallel_degree);
+ l_parallel_degree := l_function_result;
+ do_something(l_parallel_degree);
end if;
end;
/
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2150/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2150/index.html
index fbcd20cb..bd7629ae 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2150/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2150/index.html
@@ -3476,8 +3476,8 @@ Example (bad)
8
| declare
l_value integer;
begin
- if l_value = null then
- null;
+ if l_value = null then
+ null;
end if;
end;
/
@@ -3493,8 +3493,8 @@ Example (good)
8
| declare
l_value integer;
begin
- if l_value is null then
- null;
+ if l_value is null then
+ null;
end if;
end;
/
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2160/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2160/index.html
index fbf26c85..c46523e5 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2160/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2160/index.html
@@ -3475,9 +3475,9 @@ Example (bad)
7
8
| declare
co_department_id constant integer := 100;
- l_department_name departments.department_name%type :=
- department_api.name_by_id(in_id => co_department_id);
-begin
+ l_department_name departments.department_name%type :=
+ department_api.name_by_id(in_id => co_department_id);
+begin
sys.dbms_output.put_line(l_department_name);
end;
/
@@ -3505,8 +3505,8 @@ Example (good)
begin
<<init>>
begin
- l_department_name := department_api.name_by_id(in_id => co_department_id);
- exception
+ l_department_name := department_api.name_by_id(in_id => co_department_id);
+ exception
when value_error then
l_department_name := co_unkown_name;
end init;
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2170/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2170/index.html
index 9226dd47..82b2ac6e 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2170/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2170/index.html
@@ -3490,12 +3490,12 @@ Example (bad)
co_main constant user_objects.object_name%type := 'test_main';
co_sub constant user_objects.object_name%type := 'test_sub';
co_sep constant user_objects.object_name%type := ' - ';
- l_variable user_objects.object_name%type := co_main;
- begin
+ l_variable user_objects.object_name%type := co_main;
+ begin
<<sub>>
declare
- l_variable user_objects.object_name%type := co_sub;
- begin
+ l_variable user_objects.object_name%type := co_sub;
+ begin
sys.dbms_output.put_line(l_variable
|| co_sep
|| main.l_variable);
@@ -3529,12 +3529,12 @@ Example (good)
co_main constant user_objects.object_name%type := 'test_main';
co_sub constant user_objects.object_name%type := 'test_sub';
co_sep constant user_objects.object_name%type := ' - ';
- l_main_variable user_objects.object_name%type := co_main;
- begin
+ l_main_variable user_objects.object_name%type := co_main;
+ begin
<<sub>>
declare
- l_sub_variable user_objects.object_name%type := co_sub;
- begin
+ l_sub_variable user_objects.object_name%type := co_sub;
+ begin
sys.dbms_output.put_line(l_sub_variable
|| co_sep
|| l_main_variable);
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2180/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2180/index.html
index 9841a51b..11e37f70 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2180/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2180/index.html
@@ -3478,10 +3478,10 @@ Example (bad)
10
11
12
| declare
- "sal+comm" integer; -- violates also naming conventions (G-9102)
- "my constant" constant integer := 1; -- violates also naming conventions (G-9114)
- "my exception" exception; -- violates also naming conventsion (G-9113)
-begin
+ "sal+comm" integer; -- violates also naming conventions (G-9102)
+ "my constant" constant integer := 1; -- violates also naming conventions (G-9114)
+ "my exception" exception; -- violates also naming conventsion (G-9113)
+begin
"sal+comm" := "my constant";
do_something("sal+comm");
exception
@@ -3503,10 +3503,10 @@ Example (good)
10
11
12
| declare
- l_sal_comm integer;
- co_my_constant constant integer := 1;
- e_my_exception exception;
-begin
+ l_sal_comm integer;
+ co_my_constant constant integer := 1;
+ e_my_exception exception;
+begin
l_sal_comm := co_my_constant;
do_something(l_sal_comm);
exception
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2185/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2185/index.html
index 0a4415bb..1ff3b045 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2185/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2185/index.html
@@ -3478,10 +3478,10 @@ Example (bad)
10
11
12
| declare
- i integer;
- c constant integer := 1; -- violates also naming conventions (G-9114)
- e exception; -- violates also naming conventions (G-9113)
-begin
+ i integer;
+ c constant integer := 1; -- violates also naming conventions (G-9114)
+ e exception; -- violates also naming conventions (G-9113)
+begin
i := c;
do_something(i);
exception
@@ -3503,10 +3503,10 @@ Example (good)
10
11
12
| declare
- l_sal_comm integer;
- co_my_constant constant integer := 1;
- e_my_exception exception;
-begin
+ l_sal_comm integer;
+ co_my_constant constant integer := 1;
+ e_my_exception exception;
+begin
l_sal_comm := co_my_constant;
do_something(l_sal_comm);
exception
diff --git a/main/4-language-usage/2-variables-and-types/1-general/g-2190/index.html b/main/4-language-usage/2-variables-and-types/1-general/g-2190/index.html
index 4635c553..d97a699c 100644
--- a/main/4-language-usage/2-variables-and-types/1-general/g-2190/index.html
+++ b/main/4-language-usage/2-variables-and-types/1-general/g-2190/index.html
@@ -3481,8 +3481,8 @@ Example (bad)
begin
update departments
set department_name = l_department_name
- where rowid = l_rowid;
-end;
+ where rowid = l_rowid;
+end;
/
|
Example (good)
@@ -3500,8 +3500,8 @@ Example (good)
begin
update departments
set department_name = l_department_name
- where department_id = l_department_id;
-end;
+ where department_id = l_department_id;
+end;
/
diff --git a/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2210/index.html b/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2210/index.html
index 43acb9de..556757a8 100644
--- a/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2210/index.html
+++ b/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2210/index.html
@@ -3470,8 +3470,8 @@ Example (bad)
2
3
4create or replace package types_up is
- subtype salary_type is number;
-end types_up;
+ subtype salary_type is number;
+end types_up;
/
|
Example (good)
@@ -3479,8 +3479,8 @@ Example (good)
2
3
4create or replace package types_up is
- subtype salary_type is number(5,1);
-end types_up;
+ subtype salary_type is number(5,1);
+end types_up;
/
|
diff --git a/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2220/index.html b/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2220/index.html
index f81695e8..4806c6a0 100644
--- a/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2220/index.html
+++ b/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2220/index.html
@@ -3485,8 +3485,8 @@ Example (bad)
12
13
14declare
- l_result number(9,0) := 0; -- violates also G-2130, G-2230
- co_upper_bound constant pls_integer := 1e8;
+ l_result number(9,0) := 0; -- violates also G-2130, G-2230
+ co_upper_bound constant pls_integer := 1e8;
begin
<<burning_cpu>>
for i in 1..co_upper_bound
@@ -3514,8 +3514,8 @@ Example (good)
12
13
14
| declare
- l_result pls_integer := 0;
- co_upper_bound constant pls_integer := 1e8;
+ l_result pls_integer := 0;
+ co_upper_bound constant pls_integer := 1e8;
begin
<<burning_less_cpu>>
for i in 1..co_upper_bound
diff --git a/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2230/index.html b/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2230/index.html
index 03f8d6db..605b0af2 100644
--- a/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2230/index.html
+++ b/main/4-language-usage/2-variables-and-types/2-numeric-data-types/g-2230/index.html
@@ -3481,8 +3481,8 @@ Example (bad)
12
13
14
| declare
- l_result number(9,0) := 0; -- violates also G-2130, G-2220
- co_upper_bound constant pls_integer := 1e8;
+ l_result number(9,0) := 0; -- violates also G-2130, G-2220
+ co_upper_bound constant pls_integer := 1e8;
begin
<<burning_cpu>>
for i in 1..co_upper_bound
@@ -3510,8 +3510,8 @@ Example (good)
12
13
14
| declare
- l_result simple_integer := 0;
- co_upper_bound constant pls_integer := 1e8;
+ l_result simple_integer := 0;
+ co_upper_bound constant pls_integer := 1e8;
begin
<<burning_cpu>>
for i in 1..co_upper_bound
diff --git a/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2310/index.html b/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2310/index.html
index 76ff1c62..7c0e207f 100644
--- a/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2310/index.html
+++ b/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2310/index.html
@@ -3472,8 +3472,8 @@ Example (bad)
4
5
| create or replace package types_up
is
- subtype description_type is char(200);
-end types_up;
+ subtype description_type is char(200);
+end types_up;
/
|
Unexpected trailing spaces can lead to wrong results.
@@ -3488,8 +3488,8 @@ Example (bad)
9with
dept as (
select cast(department_name as varchar2(30 char)) as dname_vc2
- ,cast(department_name as char(30 char)) as dname_char
- from departments
+ ,cast(department_name as char(30 char)) as dname_char
+ from departments
)
select count(*)
from dept
@@ -3508,8 +3508,8 @@ Example (good)
4
5
| create or replace package types_up
is
- subtype description_type is varchar2(200 char);
-end types_up;
+ subtype description_type is varchar2(200 char);
+end types_up;
/
|
diff --git a/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2320/index.html b/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2320/index.html
index b624936d..d404a9f0 100644
--- a/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2320/index.html
+++ b/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2320/index.html
@@ -3470,8 +3470,8 @@ Example (bad)
2
3
4create or replace package types_up is
- subtype description_type is varchar(200);
-end types_up;
+ subtype description_type is varchar(200);
+end types_up;
/
|
Example (good)
@@ -3479,8 +3479,8 @@ Example (good)
2
3
4create or replace package types_up is
- subtype description_type is varchar2(200 char);
-end types_up;
+ subtype description_type is varchar2(200 char);
+end types_up;
/
|
diff --git a/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2330/index.html b/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2330/index.html
index 094ca128..2e6b4c4c 100644
--- a/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2330/index.html
+++ b/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2330/index.html
@@ -3477,14 +3477,14 @@ Example (bad)
9
10
11create or replace package body constants_up is
- co_null_string constant types_up.text := '';
-
+ co_null_string constant types_up.text := '';
+
function null_string return varchar2
deterministic
is
begin
- return co_null_string;
- end null_string;
+ return co_null_string;
+ end null_string;
end constants_up;
/
|
@@ -3502,8 +3502,8 @@ Example (good)
deterministic
is
begin
- return null;
- end empty_string;
+ return null;
+ end empty_string;
end constants_up;
/
diff --git a/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2340/index.html b/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2340/index.html
index 6290f929..54656cb2 100644
--- a/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2340/index.html
+++ b/main/4-language-usage/2-variables-and-types/3-character-data-types/g-2340/index.html
@@ -3471,8 +3471,8 @@ Example (bad)
2
3
4create or replace package types_up is
- subtype description_type is varchar2(200);
-end types_up;
+ subtype description_type is varchar2(200);
+end types_up;
/
|
Example (good)
@@ -3480,8 +3480,8 @@ Example (good)
2
3
4create or replace package types_up is
- subtype description_type is varchar2(200 char);
-end types_up;
+ subtype description_type is varchar2(200 char);
+end types_up;
/
|
diff --git a/main/4-language-usage/2-variables-and-types/4-boolean-data-types/g-2410/index.html b/main/4-language-usage/2-variables-and-types/4-boolean-data-types/g-2410/index.html
index d39b781d..8ef0407d 100644
--- a/main/4-language-usage/2-variables-and-types/4-boolean-data-types/g-2410/index.html
+++ b/main/4-language-usage/2-variables-and-types/4-boolean-data-types/g-2410/index.html
@@ -3495,8 +3495,8 @@ Example (bad)
13declare
co_newfile constant pls_integer := 1000;
co_oldfile constant pls_integer := 500;
- l_bigger pls_integer;
-begin
+ l_bigger pls_integer;
+begin
if co_newfile < co_oldfile then
l_bigger := constants_up.co_numeric_true;
else
@@ -3522,10 +3522,10 @@ Example (better)
13
| declare
co_newfile constant pls_integer := 1000;
co_oldfile constant pls_integer := 500;
- l_bigger boolean;
-begin
- if co_newfile < co_oldfile then
- l_bigger := true;
+ l_bigger boolean;
+begin
+ if co_newfile < co_oldfile then
+ l_bigger := true;
else
l_bigger := false;
end if;
@@ -3545,10 +3545,10 @@ Example (good)
9
| declare
co_newfile constant pls_integer := 1000;
co_oldfile constant pls_integer := 500;
- l_bigger boolean;
-begin
- l_bigger := nvl(co_newfile < co_oldfile,false);
- do_something(l_bigger);
+ l_bigger boolean;
+begin
+ l_bigger := nvl(co_newfile < co_oldfile,false);
+ do_something(l_bigger);
end;
/
|
diff --git a/main/4-language-usage/2-variables-and-types/5-large-objects/g-2510/index.html b/main/4-language-usage/2-variables-and-types/5-large-objects/g-2510/index.html
index 75d883b9..ae206b43 100644
--- a/main/4-language-usage/2-variables-and-types/5-large-objects/g-2510/index.html
+++ b/main/4-language-usage/2-variables-and-types/5-large-objects/g-2510/index.html
@@ -3475,9 +3475,9 @@ Example (bad)
6
7
8declare
- l_long long; -- violates also G-2130
- l_raw long raw; -- violates also G-2130
-begin
+ l_long long; -- violates also G-2130
+ l_raw long raw; -- violates also G-2130
+begin
do_something(l_long);
do_something(l_raw);
end;
@@ -3492,9 +3492,9 @@ Example (good)
6
7
8
| declare
- l_long clob;
- l_raw blob;
-begin
+ l_long clob;
+ l_raw blob;
+begin
do_something(l_long);
do_something(l_raw);
end;
diff --git a/main/4-language-usage/2-variables-and-types/6-cursor-variables/g-2610/index.html b/main/4-language-usage/2-variables-and-types/6-cursor-variables/g-2610/index.html
index d1a67a15..8c300a80 100644
--- a/main/4-language-usage/2-variables-and-types/6-cursor-variables/g-2610/index.html
+++ b/main/4-language-usage/2-variables-and-types/6-cursor-variables/g-2610/index.html
@@ -3481,9 +3481,9 @@ Example (bad)
13
14
15
| declare
- type local_weak_cursor_type is ref cursor;
- c_data local_weak_cursor_type;
-begin
+ type local_weak_cursor_type is ref cursor;
+ c_data local_weak_cursor_type;
+begin
if configuration.use_employee then
open c_data for
select e.employee_id,e.first_name,e.last_name
@@ -3511,8 +3511,8 @@ Example (good)
12
13
14
| declare
- c_data sys_refcursor;
-begin
+ c_data sys_refcursor;
+begin
if configuration.use_employee then
open c_data for
select e.employee_id,e.first_name,e.last_name
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3110/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3110/index.html
index ef5af3a6..a854a9f1 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3110/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3110/index.html
@@ -3481,8 +3481,8 @@ Example (bad)
13
| create or replace package body dept_api is
procedure ins_dept(in_dept_row in dept%rowtype) is
begin
- insert into departments
- values (
+ insert into departments
+ values (
departments_seq.nextval
,in_dept_row.department_name
,in_dept_row.manager_id
@@ -3513,13 +3513,13 @@ Example (good)
18
| create or replace package body dept_api is
procedure ins_dept(in_dept_row in dept%rowtype) is
begin
- insert into departments (
- department_id
- ,department_name
- ,manager_id
- ,location_id
- )
- values (
+ insert into departments (
+ department_id
+ ,department_name
+ ,manager_id
+ ,location_id
+ )
+ values (
departments_seq.nextval
,in_dept_row.department_name
,in_dept_row.manager_id
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3115/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3115/index.html
index c182a65b..010e6c1b 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3115/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3115/index.html
@@ -3469,13 +3469,13 @@ Reason
Example (bad)
| update employees
- set first_name = first_name;
-
|
+ set first_name = first_name;
+
|
Example (good)
| update employees
- set first_name = initcap(first_name);
-
|
+ set first_name = initcap(first_name);
+
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3120/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3120/index.html
index 61133aa2..55aee9f2 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3120/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3120/index.html
@@ -3487,10 +3487,10 @@ Example (bad)
4
5
6
-7select last_name
- ,first_name
- ,department_name
- from employees
+7
| select last_name
+ ,first_name
+ ,department_name
+ from employees
join departments
using (department_id)
where extract(month from hire_date) = extract(month from sysdate);
@@ -3507,8 +3507,8 @@ Example (bad)
,first_name
from employees
where employee_id in (
- select employee_id
- from jobs
+ select employee_id
+ from jobs
where job_title like '%Manager%' -- NOSONAR: G-1050 literal is ok for a standalone query
);
|
@@ -3519,10 +3519,10 @@ Example (better)
4
5
6
-7select e.last_name
- ,e.first_name
- ,d.department_name
- from employees e
+7
| select e.last_name
+ ,e.first_name
+ ,d.department_name
+ from employees e
join departments d
on (e.department_id = d.department_id)
where extract(month from e.hire_date) = extract(month from sysdate);
@@ -3535,10 +3535,10 @@ Example (good)
4
5
6
-7
| select emp.last_name
- ,emp.first_name
- ,dept.department_name
- from employees emp
+7
| select emp.last_name
+ ,emp.first_name
+ ,dept.department_name
+ from employees emp
join departments dept
on (emp.department_id = dept.department_id)
where extract(month from emp.hire_date) = extract(month from sysdate);
@@ -3555,9 +3555,9 @@ Example (good)
,emp.first_name
from employees emp
where emp.employee_id in (
- select j.employee_id
- from jobs j
- where j.job_title like '%Manager%' -- NOSONAR: G-1050 literal is ok for a standalone query
+ select job.employee_id
+ from jobs job
+ where job.job_title like '%Manager%' -- NOSONAR: G-1050 literal is ok for a standalone query
);
|
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3130/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3130/index.html
index fa13fcf7..ed00d8cf 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3130/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3130/index.html
@@ -3477,10 +3477,10 @@ Example (bad)
,e.last_name
,e.first_name
,d.department_name
- from employees e
- ,departments d
- where e.department_id = d.department_id
- and extract(month from e.hire_date) = extract(month from sysdate);
+ from employees e
+ ,departments d
+ where e.department_id = d.department_id
+ and extract(month from e.hire_date) = extract(month from sysdate);
Example (good)
1
@@ -3494,10 +3494,10 @@ Example (good)
,emp.last_name
,emp.first_name
,dept.department_name
- from employees emp
- join departments dept
- on dept.department_id = emp.department_id
- where extract(month from emp.hire_date) = extract(month from sysdate);
+ from employees emp
+ join departments dept
+ on dept.department_id = emp.department_id
+ where extract(month from emp.hire_date) = extract(month from sysdate);
|
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3140/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3140/index.html
index ca49076e..89cf98f3 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3140/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3140/index.html
@@ -3493,13 +3493,13 @@ Example (bad)
l_last_name employees.last_name%type;
begin
open c_employees;
- fetch c_employees into l_employee_id,l_first_name,l_last_name;
- <<process_employees>>
+ fetch c_employees into l_employee_id,l_first_name,l_last_name;
+ <<process_employees>>
while c_employees%found
loop
-- do something with the data
- fetch c_employees into l_employee_id,l_first_name,l_last_name;
- end loop process_employees;
+ fetch c_employees into l_employee_id,l_first_name,l_last_name;
+ end loop process_employees;
close c_employees;
end;
/
@@ -3528,13 +3528,13 @@ Example (good)
r_employee c_employees%rowtype;
begin
open c_employees;
- fetch c_employees into r_employee;
- <<process_employees>>
+ fetch c_employees into r_employee;
+ <<process_employees>>
while c_employees%found
loop
-- do something with the data
- fetch c_employees into r_employee;
- end loop process_employees;
+ fetch c_employees into r_employee;
+ end loop process_employees;
close c_employees;
end;
/
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3145/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3145/index.html
index d5aae37a..8e34ad22 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3145/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3145/index.html
@@ -3484,8 +3484,8 @@ Example (bad)
15begin
<<raise_salary>>
for r_employee in (
- select *
- from employees
+ select *
+ from employees
)
loop
employee_api.calculate_raise_by_seniority(
@@ -3515,8 +3515,8 @@ Example (good)
15
| begin
<<raise_salary>>
for r_employee in (
- select id,salary,hiredate
- from employees
+ select id,salary,hiredate
+ from employees
)
loop
employee_api.calculate_raise_by_seniority(
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3150/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3150/index.html
index f86bfcd6..a65e94c7 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3150/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3150/index.html
@@ -3514,8 +3514,8 @@ Example (bad)
before insert on locations
for each row
begin
- :new.location_id := location_seq.nextval;
-end;
+ :new.location_id := location_seq.nextval;
+end;
/
|
Example (good)
@@ -3525,8 +3525,8 @@ Example (good)
4
5
6create table locations (
- location_id number(10) generated always as identity
- ,location_name varchar2(60 char) not null
+ location_id number(10) generated always as identity
+ ,location_name varchar2(60 char) not null
,city varchar2(30 char) not null
,constraint locations_pk primary key (location_id))
/
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3160/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3160/index.html
index bd696a5e..e4bc4d3a 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3160/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3160/index.html
@@ -3506,16 +3506,16 @@ Example (bad)
r_employee.salary := r_employee.salary * constants_up.small_increase();
update employees
- set row = r_employee
- where employee_id = co_id;
+ set row = r_employee
+ where employee_id = co_id;
end;
/
|
| Error report -
-ORA-54017: update operation disallowed on virtual columns
-ORA-06512: at line 9
+ORA-54017: update operation disallowed on virtual columns
+ORA-06512: at line 9
|
Example (good)
1
@@ -3535,9 +3535,9 @@ Example (good)
15
16
17 | alter table employees
- add total_salary invisible generated always as
- (salary + nvl(commission_pct,0) * salary)
-/
+ add total_salary invisible generated always as
+ (salary + nvl(commission_pct,0) * salary)
+/
declare
r_employee employees%rowtype;
@@ -3547,8 +3547,8 @@ Example (good)
r_employee.salary := r_employee.salary * constants_up.small_increase();
update employees
- set row = r_employee
- where employee_id = co_id;
+ set row = r_employee
+ where employee_id = co_id;
end;
/
|
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3170/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3170/index.html
index 0d4bd52e..9631fb92 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3170/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3170/index.html
@@ -3496,8 +3496,8 @@ Example (bad)
8
9create table null_test (
test_case number(2) not null
- ,column_defaulted varchar2(10 char) default 'Default')
-/
+ ,column_defaulted varchar2(10 char) default 'Default')
+/
insert into null_test(test_case,column_defaulted) values (1,'Value'); -- NOSONAR: G-1050 literal is ok for a standalone insert
insert into null_test(test_case,column_defaulted) values (2,default); -- NOSONAR: G-1050 literal is ok for a standalone insert
insert into null_test(test_case,column_defaulted) values (3,null); -- NOSONAR: G-1050 literal is ok for a standalone insert
@@ -3512,8 +3512,8 @@ Example (bad)
--------- -----------
1 Value
2 Default
- 3
-
|
+ 3
+
Example (good)
1
2
@@ -3525,8 +3525,8 @@ Example (good)
8
9 | create table null_test (
test_case number(2) not null
- ,column_defaulted varchar2(10 char) default on null 'Default')
-/
+ ,column_defaulted varchar2(10 char) default on null 'Default')
+/
insert into null_test(test_case,column_defaulted) values (1,'Value'); -- NOSONAR: G-1050 literal is ok for a standalone insert
insert into null_test(test_case,column_defaulted) values (2,default); -- NOSONAR: G-1050 literal is ok for a standalone insert
insert into null_test(test_case,column_defaulted) values (3,null); -- NOSONAR: G-1050 literal is ok for a standalone insert
@@ -3541,8 +3541,8 @@ Example (good)
---------- ----------
1 Value
2 Default
- 3 Default
-
|
+ 3 Default
+
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3180/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3180/index.html
index ef655e03..4b30e10c 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3180/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3180/index.html
@@ -3476,8 +3476,8 @@ Example (bad)
,salary
,hire_date
from employees
- order by 4,1,3;
-
+ order by 4,1,3;
+
Example (good)
1
2
@@ -3491,10 +3491,10 @@ Example (good)
,salary
,hire_date
from employees
- order by hire_date
- ,first_name
- ,salary;
- |
+ order by hire_date
+ ,first_name
+ ,salary;
+
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3182/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3182/index.html
index 1d862bc5..8189d206 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3182/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3182/index.html
@@ -3491,8 +3491,8 @@ Example (bad)
5select job_id
,sum(salary) as sum_salary
from employees
- group by job_id,2
- order by job_id;
+ group by job_id,2
+ order by job_id;
|
Example (good)
1
@@ -3502,8 +3502,8 @@ Example (good)
5 | select job_id
,sum(salary) as sum_salary
from employees
- group by job_id
- order by job_id;
+ group by job_id
+ order by job_id;
|
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3183/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3183/index.html
index e7a18f9c..220ca872 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3183/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3183/index.html
@@ -3490,8 +3490,8 @@ Example (bad)
5select lower(job_id) as job
,sum(salary) as sum_salary
from employees
- group by lower(job_id)
- order by job;
+ group by lower(job_id)
+ order by job;
|
Example (good)
1
@@ -3501,8 +3501,8 @@ Example (good)
5 | select lower(job_id) as job
,sum(salary) as sum_salary
from employees
- group by job
- order by job;
+ group by job
+ order by job;
|
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3185/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3185/index.html
index 14802c6f..ffdccdc9 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3185/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3185/index.html
@@ -3493,8 +3493,8 @@ Example (bad)
,hire_date
,rownum as salary_rank
from employees
- where rownum <= 5 -- violates also G-1050 literal is ok for a standalone query
- order by salary desc;
+ where rownum <= 5 -- violates also G-1050 literal is ok for a standalone query
+ order by salary desc;
Example (good)
1
@@ -3515,16 +3515,16 @@ Example (good)
,salary
,hire_date
,rownum as salary_rank
- from (
- select first_name
- ,last_name
- ,salary
- ,hire_date
- from employees
- order by salary desc
- )
- where rownum <= 5; -- NOSONAR: G-1050 literal is ok for a standalone query
- |
+ from (
+ select first_name
+ ,last_name
+ ,salary
+ ,hire_date
+ from employees
+ order by salary desc
+ )
+ where rownum <= 5; -- NOSONAR: G-1050 literal is ok for a standalone query
+
Example (best)
(Assuming you are using Oracle Database 12c or later.)
1
@@ -3541,8 +3541,8 @@ Example (best)
,rank() over (order by salary desc) as salary_rank
from employees
order by salary desc
-fetch first 5 rows only; -- NOSONAR: G-1050 literal is ok for a standalone query
- |
+fetch first 5 rows only; -- NOSONAR: G-1050 literal is ok for a standalone query
+
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3190/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3190/index.html
index 81948a65..d763809f 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3190/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3190/index.html
@@ -3476,8 +3476,8 @@ Example (bad)
,e.last_name
,e.first_name
from employees e
-natural join departments d
- order by d.department_name
+natural join departments d
+ order by d.department_name
,e.last_name;
1
@@ -3506,8 +3506,8 @@ Example (bad)
,e.last_name
,e.first_name
from employees e
-natural join departments d
- order by d.department_name
+natural join departments d
+ order by d.department_name
,e.last_name;
|
| No data found
@@ -3524,9 +3524,9 @@ Example (good)
,e.last_name
,e.first_name
from employees e
- join departments d
- on (e.department_id = d.department_id)
- order by d.department_name
+ join departments d
+ on (e.department_id = d.department_id)
+ order by d.department_name
,e.last_name;
|
1
diff --git a/main/4-language-usage/3-dml-and-sql/1-general/g-3195/index.html b/main/4-language-usage/3-dml-and-sql/1-general/g-3195/index.html
index 111c8d60..a16f0806 100644
--- a/main/4-language-usage/3-dml-and-sql/1-general/g-3195/index.html
+++ b/main/4-language-usage/3-dml-and-sql/1-general/g-3195/index.html
@@ -3472,8 +3472,8 @@ Example (bad)
4 | select e.employee_id
,e.last_name
from employees e
- where e.last_name like 'Smith'; -- violates also G-1050 literal is ok for a standalone query
-
|
+ where e.last_name like 'Smith'; -- violates also G-1050 literal is ok for a standalone query
+
Example (good)
Using a wildcard:
1
@@ -3482,8 +3482,8 @@ Example (good)
4 | select e.employee_id
,e.last_name
from employees e
- where e.last_name like 'Smith%';
-
|
+ where e.last_name like 'Smith%';
+
Change to equality operator instead:
1
2
@@ -3491,8 +3491,8 @@ Example (good)
4 | select e.employee_id
,e.last_name
from employees e
- where e.last_name = 'Smith'; -- NOSONAR: G-1050 literal is ok for a standalone query
-
|
+ where e.last_name = 'Smith'; -- NOSONAR: G-1050 literal is ok for a standalone query
+
diff --git a/main/4-language-usage/3-dml-and-sql/2-bulk-operations/g-3210/index.html b/main/4-language-usage/3-dml-and-sql/2-bulk-operations/g-3210/index.html
index b050a797..7f1236dd 100644
--- a/main/4-language-usage/3-dml-and-sql/2-bulk-operations/g-3210/index.html
+++ b/main/4-language-usage/3-dml-and-sql/2-bulk-operations/g-3210/index.html
@@ -3493,9 +3493,9 @@ Example (bad)
);
<<process_employees>>
for i in 1..t_employee_ids.count()
- loop
- update employees
- set salary = salary + (salary * co_increase)
+ loop
+ update employees
+ set salary = salary + (salary * co_increase)
where employee_id = t_employee_ids(i);
end loop process_employees;
end;
@@ -3525,9 +3525,9 @@ Example (good)
id_in => co_department_id
);
<<process_employees>>
- forall i in 1..t_employee_ids.count()
- update employees
- set salary = salary + (salary * co_increase)
+ forall i in 1..t_employee_ids.count()
+ update employees
+ set salary = salary + (salary * co_increase)
where employee_id = t_employee_ids(i);
end;
/
diff --git a/main/4-language-usage/3-dml-and-sql/2-bulk-operations/g-3220/index.html b/main/4-language-usage/3-dml-and-sql/2-bulk-operations/g-3220/index.html
index ba774ea8..2bbd576c 100644
--- a/main/4-language-usage/3-dml-and-sql/2-bulk-operations/g-3220/index.html
+++ b/main/4-language-usage/3-dml-and-sql/2-bulk-operations/g-3220/index.html
@@ -3494,8 +3494,8 @@ Example (bad)
id_in => co_department_id
);
<<process_employees>>
- forall i in 1..t_employee_ids.count() save exceptions
- update employees
+ forall i in 1..t_employee_ids.count() save exceptions
+ update employees
set salary = salary + (salary * co_increase)
where employee_id = t_employee_ids(i);
end;
@@ -3536,18 +3536,18 @@ Example (good)
id_in => co_department_id
);
<<process_employees>>
- forall i in 1..t_employee_ids.count() save exceptions
- update employees
+ forall i in 1..t_employee_ids.count() save exceptions
+ update employees
set salary = salary + (salary * co_increase)
where employee_id = t_employee_ids(i);
exception
- when e_bulk_errors then
- <<handle_bulk_exceptions>>
- for i in 1..sql%bulk_exceptions.count
- loop
- logger.log(sql%bulk_exceptions(i).error_code);
- end loop handle_bulk_exceptions;
-end;
+ when e_bulk_errors then
+ <<handle_bulk_exceptions>>
+ for i in 1..sql%bulk_exceptions.count
+ loop
+ logger.log(sql%bulk_exceptions(i).error_code);
+ end loop handle_bulk_exceptions;
+end;
/
diff --git a/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3310/index.html b/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3310/index.html
index 22fccab4..2700257d 100644
--- a/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3310/index.html
+++ b/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3310/index.html
@@ -3534,8 +3534,8 @@ Example (bad)
l_counter := l_counter + 1;
if l_counter = co_commit_interval then
- commit;
- l_counter := 0;
+ commit;
+ l_counter := 0;
end if;
end loop new_orders;
if l_counter > 0 then
@@ -3583,8 +3583,8 @@ Example (good)
where ol.order_id = r_order.order_id;
end loop new_orders;
- commit;
-end;
+ commit;
+end;
/
Example (best)
@@ -3615,8 +3615,8 @@ Example (best)
)
set discount = sales_api.calculate_discount(p_customer_id => customer_id);
- commit;
-end;
+ commit;
+end;
/
diff --git a/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3320/index.html b/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3320/index.html
index 8bca8177..6d45c574 100644
--- a/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3320/index.html
+++ b/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3320/index.html
@@ -3506,8 +3506,8 @@ Example (bad)
l_counter integer := 0;
begin
<<create_headers>>
- loop
- insert into headers (id,text)
+ loop
+ insert into headers (id,text)
values (
l_counter,co_number
|| co_space
@@ -3523,8 +3523,8 @@ Example (bad)
from dual
connect by level <= co_max_level;
- commit;
- l_counter := l_counter + 1;
+ commit;
+ l_counter := l_counter + 1;
exit create_headers when l_counter > co_upper_bound;
end loop create_headers;
end;
@@ -3590,14 +3590,14 @@ Example (good)
from dual
connect by level <= co_max_level;
- commit;
- end create_rows;
+ commit;
+ end create_rows;
begin
<<create_headers>>
for l_counter in 1..co_upper_bound
- loop
- create_rows(l_counter);
- end loop create_headers;
+ loop
+ create_rows(l_counter);
+ end loop create_headers;
end;
/
diff --git a/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3330/index.html b/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3330/index.html
index bbe3619c..31444034 100644
--- a/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3330/index.html
+++ b/main/4-language-usage/3-dml-and-sql/3-transaction-control/g-3330/index.html
@@ -3486,12 +3486,12 @@ Example (bad)
9
10create or replace package body dept_api is
procedure ins_dept(in_dept_row in dept%rowtype) is
- pragma autonomous_transaction;
- begin
+ pragma autonomous_transaction;
+ begin
insert into dept
values in_dept_row;
- commit; -- required by autonomous transaction
- end ins_dept;
+ commit; -- required by autonomous transaction
+ end ins_dept;
end dept_api;
/
|
@@ -3510,9 +3510,9 @@ Example (good)
begin
insert into dept
values in_dept_row;
- -- transaction is commited in calling module
- -- after the completion of the unit of work
- end ins_dept;
+ -- transaction is commited in calling module
+ -- after the completion of the unit of work
+ end ins_dept;
end dept_api;
/
diff --git a/main/4-language-usage/4-control-structures/1-cursor/g-4110/index.html b/main/4-language-usage/4-control-structures/1-cursor/g-4110/index.html
index cd0bec19..7d67cd9b 100644
--- a/main/4-language-usage/4-control-structures/1-cursor/g-4110/index.html
+++ b/main/4-language-usage/4-control-structures/1-cursor/g-4110/index.html
@@ -3515,8 +3515,8 @@ Example (bad)
sys.dbms_output.put_line(t_employees(i).last_name);
end loop display_employees;
- exit process_employees when not c_employees%found;
- end loop process_employees;
+ exit process_employees when not c_employees%found;
+ end loop process_employees;
close c_employees;
end;
@@ -3572,8 +3572,8 @@ Example (good)
sys.dbms_output.put_line(t_employees(i).last_name);
end loop display_employees;
- exit process_employees when c_employees%notfound;
- end loop process_employees;
+ exit process_employees when c_employees%notfound;
+ end loop process_employees;
close c_employees;
end;
diff --git a/main/4-language-usage/4-control-structures/1-cursor/g-4120/index.html b/main/4-language-usage/4-control-structures/1-cursor/g-4120/index.html
index 240e5fd8..6af5d42f 100644
--- a/main/4-language-usage/4-control-structures/1-cursor/g-4120/index.html
+++ b/main/4-language-usage/4-control-structures/1-cursor/g-4120/index.html
@@ -3522,8 +3522,8 @@ Example (bad)
<<process_employees>>
loop
fetch c_employees bulk collect into t_employees limit co_bulk_size;
- exit process_employees when c_employees%notfound;
-
+ exit process_employees when c_employees%notfound;
+
<<display_employees>>
for i in 1..t_employees.count()
loop
@@ -3577,8 +3577,8 @@ Example (better)
<<process_employees>>
loop
fetch c_employees bulk collect into t_employees limit co_bulk_size;
- exit process_employees when t_employees.count() = 0;
- <<display_employees>>
+ exit process_employees when t_employees.count() = 0;
+ <<display_employees>>
for i in 1..t_employees.count()
loop
sys.dbms_output.put_line(t_employees(i).last_name);
@@ -3636,8 +3636,8 @@ Example (good)
loop
sys.dbms_output.put_line(t_employees(i).last_name);
end loop display_employees;
- exit process_employees when t_employees.count() <> co_bulk_size;
- end loop process_employees;
+ exit process_employees when t_employees.count() <> co_bulk_size;
+ end loop process_employees;
close c_employees;
end;
diff --git a/main/4-language-usage/4-control-structures/1-cursor/g-4130/index.html b/main/4-language-usage/4-control-structures/1-cursor/g-4130/index.html
index 40f025b4..8b00630d 100644
--- a/main/4-language-usage/4-control-structures/1-cursor/g-4130/index.html
+++ b/main/4-language-usage/4-control-structures/1-cursor/g-4130/index.html
@@ -3492,8 +3492,8 @@ Example (bad)
r_department_salary c_department_salary%rowtype;
co_dept_id constant departments.department_id%type := in_dept_id;
begin
- open c_department_salary(p_dept_id => co_dept_id);
- fetch c_department_salary into r_department_salary;
+ open c_department_salary(p_dept_id => co_dept_id);
+ fetch c_department_salary into r_department_salary;
return r_department_salary.sum_salary;
end department_salary;
@@ -3527,10 +3527,10 @@ Example (good)
r_department_salary c_department_salary%rowtype;
co_dept_id constant departments.department_id%type := in_dept_id;
begin
- open c_department_salary(p_dept_id => co_dept_id);
- fetch c_department_salary into r_department_salary;
- close c_department_salary;
- return r_department_salary.sum_salary;
+ open c_department_salary(p_dept_id => co_dept_id);
+ fetch c_department_salary into r_department_salary;
+ close c_department_salary;
+ return r_department_salary.sum_salary;
end department_salary;
end employee_api;
/
diff --git a/main/4-language-usage/4-control-structures/1-cursor/g-4140/index.html b/main/4-language-usage/4-control-structures/1-cursor/g-4140/index.html
index 2865fc10..7e3951cf 100644
--- a/main/4-language-usage/4-control-structures/1-cursor/g-4140/index.html
+++ b/main/4-language-usage/4-control-structures/1-cursor/g-4140/index.html
@@ -3512,10 +3512,10 @@ Example (bad)
where employee_id = co_employee_id
returning department_id into l_dept_id;
- process_dept(in_dept_id => l_dept_id);
-
- if sql%rowcount > co_one then
- -- too many rows deleted.
+ process_dept(in_dept_id => l_dept_id);
+
+ if sql%rowcount > co_one then
+ -- too many rows deleted.
rollback;
end if;
end remove_employee;
@@ -3571,12 +3571,12 @@ Example (good)
where employee_id = co_employee_id
returning department_id into l_dept_id;
- l_deleted_emps := sql%rowcount;
-
- process_dept(in_dept_id => l_dept_id);
-
- if l_deleted_emps > co_one then
- -- too many rows deleted.
+ l_deleted_emps := sql%rowcount;
+
+ process_dept(in_dept_id => l_dept_id);
+
+ if l_deleted_emps > co_one then
+ -- too many rows deleted.
rollback;
end if;
end remove_employee;
diff --git a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4210/index.html b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4210/index.html
index 07ef5e5c..8f0c4fb0 100644
--- a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4210/index.html
+++ b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4210/index.html
@@ -3480,14 +3480,14 @@ Example (bad)
12declare
l_color types_up.color_code_type;
begin
- if l_color = constants_up.co_red then
- my_package.do_red();
- elsif l_color = constants_up.co_blue then
- my_package.do_blue();
- elsif l_color = constants_up.co_black then
- my_package.do_black();
- end if;
-end;
+ if l_color = constants_up.co_red then
+ my_package.do_red();
+ elsif l_color = constants_up.co_blue then
+ my_package.do_blue();
+ elsif l_color = constants_up.co_black then
+ my_package.do_black();
+ end if;
+end;
/
|
Example (good)
@@ -3503,22 +3503,18 @@ Example (good)
10
11
12
-13
-14
-15 | declare
l_color types_up.color_code_type;
begin
- case l_color
- when constants_up.co_red then
- my_package.do_red();
- when constants_up.co_blue then
- my_package.do_blue();
- when constants_up.co_black then
- my_package.do_black();
- else
- null;
- end case;
-end;
+ case l_color
+ when constants_up.co_red then
+ my_package.do_red();
+ when constants_up.co_blue then
+ my_package.do_blue();
+ when constants_up.co_black then
+ my_package.do_black();
+ end case;
+end;
/
|
diff --git a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4220/index.html b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4220/index.html
index 8fb348d6..0cd3fd29 100644
--- a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4220/index.html
+++ b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4220/index.html
@@ -3472,8 +3472,8 @@ Example (bad)
4
5
6-- @formatter:off
-select decode(ctry.country_code, constants_up.co_ctry_uk, constants_up.co_lang_english
- , constants_up.co_ctry_fr, constants_up.co_lang_french
+select decode(ctry.country_code, constants_up.co_ctry_uk, constants_up.co_lang_english
+ , constants_up.co_ctry_fr, constants_up.co_lang_french
, constants_up.co_ctry_de, constants_up.co_lang_german
, constants_up.co_lang_not_supported)
from countries ctry;
@@ -3487,8 +3487,8 @@ Example (bad)
6
| -- @formatter:off
select decode(ctry.country_code, constants_up.co_ctry_uk, constants_up.co_lang_english
, constants_up.co_ctry_fr, constants_up.co_lang_french
- , null , constants_up.co_lang_unknown
- , constants_up.co_lang_not_supported)
+ , null , constants_up.co_lang_unknown
+ , constants_up.co_lang_not_supported)
from countries ctry;
|
Example (good)
@@ -3502,8 +3502,8 @@ Example (good)
8
9
10
-11select case ctry.country_code
- when constants_up.co_ctry_uk then
+11
| select case ctry.country_code
+ when constants_up.co_ctry_uk then
constants_up.co_lang_english
when constants_up.co_ctry_fr then
constants_up.co_lang_french
@@ -3525,13 +3525,13 @@ Example (good)
8
9
10
-11
| select case
- when ctry.country_code = constants_up.co_ctry_uk then
+11
| select case
+ when ctry.country_code = constants_up.co_ctry_uk then
constants_up.co_lang_english
when ctry.country_code = constants_up.co_ctry_fr then
constants_up.co_lang_french
- when ctry.country_code is null then
- constants_up.co_lang_unknown
+ when ctry.country_code is null then
+ constants_up.co_lang_unknown
else
constants_up.co_lang_not_supported
end
diff --git a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4230/index.html b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4230/index.html
index 4932c7b7..f678c02e 100644
--- a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4230/index.html
+++ b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4230/index.html
@@ -3468,13 +3468,13 @@ Reason
The coalesce function does not have this drawback.
Example (bad)
| select nvl(dummy,my_package.expensive_null(value_in => dummy))
- from dual;
+2
| select nvl(dummy,my_package.expensive_null(value_in => dummy))
+ from dual;
|
Example (good)
| select coalesce(dummy,my_package.expensive_null(value_in => dummy))
- from dual;
+2
| select coalesce(dummy,my_package.expensive_null(value_in => dummy))
+ from dual;
|
diff --git a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4240/index.html b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4240/index.html
index 992c5996..c2400797 100644
--- a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4240/index.html
+++ b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4240/index.html
@@ -3468,9 +3468,9 @@ Reason
Example (bad)
| select nvl2(dummy,my_package.expensive_nn(value_in => dummy)
- ,my_package.expensive_null(value_in => dummy))
- from dual;
+3
| select nvl2(dummy,my_package.expensive_nn(value_in => dummy)
+ ,my_package.expensive_null(value_in => dummy))
+ from dual;
|
Example (good)
1
@@ -3479,13 +3479,13 @@ Example (good)
4
5
6
-7 | select case
- when dummy is null then
- my_package.expensive_null(value_in => dummy)
- else
- my_package.expensive_nn(value_in => dummy)
- end
- from dual;
+7
| select case
+ when dummy is null then
+ my_package.expensive_null(value_in => dummy)
+ else
+ my_package.expensive_nn(value_in => dummy)
+ end
+ from dual;
|
diff --git a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4250/index.html b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4250/index.html
index 9d4b5733..684b5589 100644
--- a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4250/index.html
+++ b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4250/index.html
@@ -3488,9 +3488,9 @@ Example (bad)
my_package.do_red();
when constants_up.co_blue then
my_package.do_blue();
- when constants_up.co_red then -- never reached
- my_package.do_black(); -- dead code
- else
+ when constants_up.co_red then -- never reached
+ my_package.do_black(); -- dead code
+ else
null;
end case;
end;
@@ -3519,9 +3519,9 @@ Example (good)
my_package.do_red();
when constants_up.co_blue then
my_package.do_blue();
- when constants_up.co_black then
- my_package.do_black();
- else
+ when constants_up.co_black then
+ my_package.do_black();
+ else
null;
end case;
end;
diff --git a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4260/index.html b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4260/index.html
index 594c44b1..e642ae0a 100644
--- a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4260/index.html
+++ b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4260/index.html
@@ -3476,8 +3476,8 @@ Example (bad)
8
| declare
l_color types_up.color_code_type;
begin
- if not l_color != constants_up.co_red then
- my_package.do_red();
+ if not l_color != constants_up.co_red then
+ my_package.do_red();
end if;
end;
/
@@ -3493,8 +3493,8 @@ Example (good)
8
| declare
l_color types_up.color_code_type;
begin
- if l_color = constants_up.co_red then
- my_package.do_red();
+ if l_color = constants_up.co_red then
+ my_package.do_red();
end if;
end;
/
diff --git a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4270/index.html b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4270/index.html
index 03c0e801..21eafc9a 100644
--- a/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4270/index.html
+++ b/main/4-language-usage/4-control-structures/2-case-if-decode-nvl-nvl2-coalesce/g-4270/index.html
@@ -3480,8 +3480,8 @@ Example (bad)
l_is_valid boolean;
begin
l_is_valid := my_package.is_valid_number(co_string);
- if l_is_valid = true then
- my_package.convert_number(l_string);
+ if l_is_valid = true then
+ my_package.convert_number(l_string);
end if;
end;
/
@@ -3501,8 +3501,8 @@ Example (good)
l_is_valid boolean;
begin
l_is_valid := my_package.is_valid_number(co_string);
- if l_is_valid then
- my_package.convert_number(l_string);
+ if l_is_valid then
+ my_package.convert_number(l_string);
end if;
end;
/
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4310/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4310/index.html
index c0e2ac1e..99e20416 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4310/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4310/index.html
@@ -3541,16 +3541,16 @@ Example (bad)
loop
if substr(co_password,j,1) = substr(co_digitarray,i,1) then
l_isdigit := true;
- goto check_other_things;
- end if;
+ goto check_other_things;
+ end if;
end loop check_pw_char;
end loop check_digit;
- <<check_other_things>>
- null;
+ <<check_other_things>>
+ null;
- if not l_isdigit then
- raise_application_error(co_errno,co_errmsg);
+ if not l_isdigit then
+ raise_application_error(co_errno,co_errmsg);
end if;
end password_check;
end my_package;
@@ -3617,11 +3617,11 @@ Example (better)
end loop check_pw_char;
end loop check_digit;
- <<check_other_things>>
- null;
+ <<check_other_things>>
+ null;
- if not l_isdigit then
- raise_application_error(co_errno,co_errmsg);
+ if not l_isdigit then
+ raise_application_error(co_errno,co_errmsg);
end if;
end password_check;
end my_package;
@@ -3647,8 +3647,8 @@ Example (good)
co_errno constant simple_integer := -20501;
co_errmsg constant string(100 char) := 'Password must contain a digit.';
begin
- if not regexp_like(co_password,co_digitpattern) then
- raise_application_error(co_errno,co_errmsg);
+ if not regexp_like(co_password,co_digitpattern) then
+ raise_application_error(co_errno,co_errmsg);
end if;
end password_check;
end my_package;
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4320/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4320/index.html
index 695b82d6..04e2762a 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4320/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4320/index.html
@@ -3499,25 +3499,25 @@ Example (bad)
co_increment constant simple_integer := 1;
begin
i := co_min_value;
- while (i <= co_max_value)
- loop
+ while (i <= co_max_value)
+ loop
i := i + co_increment;
- end loop;
-
- loop
- exit when true; -- NOSONAR: G-4380 cannot use labelled exit here
- end loop;
-
- for i in co_min_value..co_max_value
- loop
+ end loop;
+
+ loop
+ exit when true; -- NOSONAR: G-4380 cannot use labelled exit here
+ end loop;
+
+ for i in co_min_value..co_max_value
+ loop
sys.dbms_output.put_line(i);
- end loop;
-
- for r_employee in (select last_name from employees)
- loop
+ end loop;
+
+ for r_employee in (select last_name from employees)
+ loop
sys.dbms_output.put_line(r_employee.last_name);
- end loop;
-end;
+ end loop;
+end;
/
|
Example (good)
@@ -3551,42 +3551,36 @@ Example (good)
28
29
30
-31
-32
-33
-34 | declare
i integer;
co_min_value constant simple_integer := 1;
co_max_value constant simple_integer := 10;
co_increment constant simple_integer := 1;
begin
i := co_min_value;
- <<while_loop>>
- while (i <= co_max_value)
+ <<while_loop>>
+ while (i <= co_max_value)
loop
i := i + co_increment;
- end loop while_loop;
-
- <<basic_loop>>
- loop
+ end loop while_loop;
+
+ <<basic_loop>>
+ loop
exit basic_loop when true;
- end loop basic_loop;
-
- <<for_loop>>
- for i in co_min_value..co_max_value
+ end loop basic_loop;
+
+ <<for_loop>>
+ for i in co_min_value..co_max_value
loop
sys.dbms_output.put_line(i);
- end loop for_loop;
-
- <<process_employees>>
- for r_employee in (
- select last_name
- from employees
- )
+ end loop for_loop;
+
+ <<process_employees>>
+ for r_employee in (select last_name from employees)
loop
sys.dbms_output.put_line(r_employee.last_name);
- end loop process_employees;
-end;
+ end loop process_employees;
+end;
/
|
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4325/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4325/index.html
index 3e8a4a57..133ce9a4 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4325/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4325/index.html
@@ -3477,13 +3477,13 @@ Example (bad)
9
10
11
-12<<my_label>>
-declare
+12
| <<my_label>>
+declare
co_min_value constant simple_integer := 1;
co_max_value constant simple_integer := 8;
begin
- <<my_label>>
- for i in co_min_value..co_max_value
+ <<my_label>>
+ for i in co_min_value..co_max_value
loop
sys.dbms_output.put_line(i);
end loop my_label;
@@ -3502,13 +3502,13 @@ Example (good)
9
10
11
-12
| <<output_values>>
-declare
+12
| <<output_values>>
+declare
co_min_value constant simple_integer := 1;
co_max_value constant simple_integer := 8;
begin
- <<process_values>>
- for i in co_min_value..co_max_value
+ <<process_values>>
+ for i in co_min_value..co_max_value
loop
sys.dbms_output.put_line(i);
end loop process_values;
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4330/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4330/index.html
index 15c4b924..be35b661 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4330/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4330/index.html
@@ -3494,9 +3494,9 @@ Example (bad)
open c_employees;
<<read_employees>>
- loop
- fetch c_employees into r_employee;
- exit read_employees when c_employees%notfound;
+ loop
+ fetch c_employees into r_employee;
+ exit read_employees when c_employees%notfound;
sys.dbms_output.put_line(r_employee.last_name);
end loop read_employees;
@@ -3522,9 +3522,9 @@ Example (good)
from employees;
begin
<<read_employees>>
- for r_employee in c_employees
- loop
- sys.dbms_output.put_line(r_employee.last_name);
+ for r_employee in c_employees
+ loop
+ sys.dbms_output.put_line(r_employee.last_name);
end loop read_employees;
end;
/
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4340/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4340/index.html
index 260007b7..579771a4 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4340/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4340/index.html
@@ -3506,9 +3506,9 @@ Example (bad)
i := co_min_value;
<<process_employees>>
- loop
- exit process_employees when i > t_employees.count();
- sys.dbms_output.put_line(t_employees(i));
+ loop
+ exit process_employees when i > t_employees.count();
+ sys.dbms_output.put_line(t_employees(i));
i := i + co_increment;
end loop process_employees;
end;
@@ -3538,9 +3538,9 @@ Example (good)
t_employees := t_employee_type(co_himuro,co_livingston);
<<process_employees>>
- for i in 1..t_employees.count()
- loop
- sys.dbms_output.put_line(t_employees(i));
+ for i in 1..t_employees.count()
+ loop
+ sys.dbms_output.put_line(t_employees(i));
end loop process_employees;
end;
/
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4350/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4350/index.html
index eef408a9..adeaad0d 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4350/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4350/index.html
@@ -3501,8 +3501,8 @@ Example (bad)
t_employees t_employee_type := t_employee_type();
begin
<<process_employees>>
- for i in t_employees.first()..t_employees.last()
- loop
+ for i in t_employees.first()..t_employees.last()
+ loop
sys.dbms_output.put_line(t_employees(i)); -- some processing
end loop process_employees;
end;
@@ -3525,8 +3525,8 @@ Example (better)
t_employees t_employee_type := t_employee_type();
begin
<<process_employees>>
- for i in 1..t_employees.count()
- loop
+ for i in 1..t_employees.count()
+ loop
sys.dbms_output.put_line(t_employees(i)); -- some processing
end loop process_employees;
end;
@@ -3550,10 +3550,10 @@ Example (good)
type t_employee_type is table of employees.employee_id%type;
t_employees t_employee_type := t_employee_type();
begin
- if t_employees is not null then
- <<process_employees>>
- for i in 1..t_employees.count()
- loop
+ if t_employees is not null then
+ <<process_employees>>
+ for i in 1..t_employees.count()
+ loop
sys.dbms_output.put_line(t_employees(i)); -- some processing
end loop process_employees;
end if;
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4360/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4360/index.html
index 3a1c1c8b..ef0d5665 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4360/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4360/index.html
@@ -3504,8 +3504,8 @@ Example (bad)
if t_employees is not null then
<<process_employees>>
- for i in 1..t_employees.count()
- loop
+ for i in 1..t_employees.count()
+ loop
sys.dbms_output.put_line(t_employees(i));
end loop process_employees;
end if;
@@ -3549,8 +3549,8 @@ Example (good)
l_index := t_employees.first();
<<process_employees>>
- while l_index is not null
- loop
+ while l_index is not null
+ loop
sys.dbms_output.put_line(t_employees(l_index));
l_index := t_employees.next(l_index);
end loop process_employees;
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4365/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4365/index.html
index 7bf88b59..1b698513 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4365/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4365/index.html
@@ -3481,8 +3481,8 @@ Example (bad)
loop
my_package.some_processing();
- continue process_employees;
-
+ continue process_employees;
+
my_package.some_further_processing(); -- Dead code
end loop process_employees;
end;
@@ -3508,8 +3508,8 @@ Example (good)
loop
my_package.some_processing();
- continue process_employees when extract(year from sysdate) > co_first_year;
-
+ continue process_employees when extract(year from sysdate) > co_first_year;
+
my_package.some_further_processing();
end loop process_employees;
end;
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4370/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4370/index.html
index dc9f567f..8dfcd1f6 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4370/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4370/index.html
@@ -3511,11 +3511,11 @@ Example (bad)
begin
i := co_min_value;
<<while_loop>>
- while (i <= co_max_value)
- loop
+ while (i <= co_max_value)
+ loop
i := i + co_increment;
- exit while_loop when i > co_max_value;
- end loop while_loop;
+ exit while_loop when i > co_max_value;
+ end loop while_loop;
<<basic_loop>>
loop
@@ -3523,22 +3523,22 @@ Example (bad)
end loop basic_loop;
<<for_loop>>
- for i in co_min_value..co_max_value
- loop
+ for i in co_min_value..co_max_value
+ loop
null;
- exit for_loop when i = co_max_value;
- end loop for_loop;
+ exit for_loop when i = co_max_value;
+ end loop for_loop;
<<process_employees>>
- for r_employee in (
- select last_name
+ for r_employee in (
+ select last_name
from employees
)
loop
sys.dbms_output.put_line(r_employee.last_name);
null; -- some processing
- exit process_employees when true;
- end loop process_employees;
+ exit process_employees when true;
+ end loop process_employees;
end;
/
|
@@ -3584,8 +3584,8 @@ Example (good)
begin
i := co_min_value;
<<while_loop>>
- while (i <= co_max_value)
- loop
+ while (i <= co_max_value)
+ loop
i := i + co_increment;
end loop while_loop;
@@ -3595,14 +3595,14 @@ Example (good)
end loop basic_loop;
<<for_loop>>
- for i in co_min_value..co_max_value
- loop
+ for i in co_min_value..co_max_value
+ loop
sys.dbms_output.put_line(i);
end loop for_loop;
<<process_employees>>
- for r_employee in (
- select last_name
+ for r_employee in (
+ select last_name
from employees
)
loop
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4375/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4375/index.html
index 1e8c212c..a9892b36 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4375/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4375/index.html
@@ -3487,10 +3487,10 @@ Example (bad)
loop
my_package.some_processing();
- if extract(year from sysdate) > co_first_year then
- exit process_employees; -- violates also G-4365
- end if;
-
+ if extract(year from sysdate) > co_first_year then
+ exit process_employees; -- violates also G-4365
+ end if;
+
my_package.some_further_processing();
end loop process_employees;
end;
@@ -3516,8 +3516,8 @@ Example (good)
loop
my_package.some_processing();
- exit process_employees when extract(year from sysdate) > co_first_year;
-
+ exit process_employees when extract(year from sysdate) > co_first_year;
+
my_package.some_further_processing();
end loop process_employees;
end;
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4380/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4380/index.html
index b81824c6..90720119 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4380/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4380/index.html
@@ -3516,11 +3516,11 @@ Example (bad)
|| co_inner_text
|| l_innerlp);
- exit when l_innerlp = co_exit_value;
- end loop innerloop;
+ exit when l_innerlp = co_exit_value;
+ end loop innerloop;
- exit when l_innerlp = co_exit_value;
- end loop outerloop;
+ exit when l_innerlp = co_exit_value;
+ end loop outerloop;
end;
/
@@ -3573,8 +3573,8 @@ Example (good)
|| co_inner_text
|| l_innerlp);
- exit outerloop when l_innerlp = co_exit_value;
- end loop innerloop;
+ exit outerloop when l_innerlp = co_exit_value;
+ end loop innerloop;
end loop outerloop;
end;
/
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4385/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4385/index.html
index f7c6e4da..4e9fc268 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4385/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4385/index.html
@@ -3488,11 +3488,11 @@ Example (bad)
from employees;
begin
<<check_employees>>
- for r_employee in c_employees
- loop
- l_employee_found := true;
- end loop check_employees;
- if l_employee_found then
+ for r_employee in c_employees
+ loop
+ l_employee_found := true;
+ end loop check_employees;
+ if l_employee_found then
null; -- some processing;
end if;
end;
@@ -3521,11 +3521,11 @@ Example (good)
from employees;
r_employee c_employees%rowtype;
begin
- open c_employees;
- fetch c_employees into r_employee;
- l_employee_found := c_employees%found;
- close c_employees;
- if l_employee_found then
+ open c_employees;
+ fetch c_employees into r_employee;
+ l_employee_found := c_employees%found;
+ close c_employees;
+ if l_employee_found then
null; -- some processing;
end if;
end;
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4387/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4387/index.html
index b2c60d15..43556eee 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4387/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4387/index.html
@@ -3493,14 +3493,14 @@ Example (bad)
l_ename emp.ename%type;
begin
<<fetch_name>>
- for r in (
- select ename
+ for r in (
+ select ename
from emp
- where empno = in_empno
- )
+ where empno = in_empno
+ )
loop
- l_ename := r.ename;
- end loop fetch_name;
+ l_ename := r.ename;
+ end loop fetch_name;
return l_ename;
end emp_name;
end employee_api;
@@ -3528,10 +3528,10 @@ Example (good)
l_ename emp.ename%type;
begin
select ename
- into l_ename
- from emp
- where empno = in_empno;
- return l_ename;
+ into l_ename
+ from emp
+ where empno = in_empno;
+ return l_ename;
exception
when no_data_found then
return null;
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4390/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4390/index.html
index dcb7fded..50f478d7 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4390/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4390/index.html
@@ -3501,8 +3501,8 @@ Example (bad)
l_row := co_lower_bound;
l_value := co_first_value;
<<for_loop>>
- for i in co_lower_bound..co_upper_bound
- loop
+ for i in co_lower_bound..co_upper_bound
+ loop
sys.dbms_output.put_line(l_row
|| co_delimiter
|| l_value);
@@ -3536,12 +3536,12 @@ Example (good)
co_first_value constant simple_integer := 100;
begin
<<for_loop>>
- for i in co_lower_bound..co_upper_bound
- loop
+ for i in co_lower_bound..co_upper_bound
+ loop
sys.dbms_output.put_line(i
|| co_delimiter
- || to_char(co_first_value + i * co_value_incr));
- end loop for_loop;
+ || to_char(co_first_value + i * co_value_incr));
+ end loop for_loop;
end;
/
diff --git a/main/4-language-usage/4-control-structures/3-flow-control/g-4395/index.html b/main/4-language-usage/4-control-structures/3-flow-control/g-4395/index.html
index 48e33fdf..2d383833 100644
--- a/main/4-language-usage/4-control-structures/3-flow-control/g-4395/index.html
+++ b/main/4-language-usage/4-control-structures/3-flow-control/g-4395/index.html
@@ -3475,8 +3475,8 @@ Example (bad)
7
8begin
<<for_loop>>
- for i in 1..5
- loop
+ for i in 1..5
+ loop
sys.dbms_output.put_line(i);
end loop for_loop;
end;
@@ -3498,8 +3498,8 @@ Example (good)
co_upper_bound constant simple_integer := 5;
begin
<<for_loop>>
- for i in co_lower_bound..co_upper_bound
- loop
+ for i in co_lower_bound..co_upper_bound
+ loop
sys.dbms_output.put_line(i);
end loop for_loop;
end;
diff --git a/main/4-language-usage/5-exception-handling/g-5010/index.html b/main/4-language-usage/5-exception-handling/g-5010/index.html
index 3b9ba5eb..309560aa 100644
--- a/main/4-language-usage/5-exception-handling/g-5010/index.html
+++ b/main/4-language-usage/5-exception-handling/g-5010/index.html
@@ -3488,10 +3488,10 @@ Example (bad)
co_start constant logger_logs.text%type := 'start';
co_end constant logger_logs.text%type := 'end';
begin
- sys.dbms_output.put_line(co_start);
- -- some processing
- sys.dbms_output.put_line(co_end);
-end;
+ sys.dbms_output.put_line(co_start);
+ -- some processing
+ sys.dbms_output.put_line(co_end);
+end;
/
|
Example (good)
@@ -3511,10 +3511,10 @@ Example (good)
co_end constant logger_logs.text%type := 'end';
co_scope constant logger_logs.scope%type := 'demo';
begin
- logger.log(co_start,co_scope);
- -- some processing
- logger.log(co_end,co_scope);
-end;
+ logger.log(co_start,co_scope);
+ -- some processing
+ logger.log(co_end,co_scope);
+end;
/
diff --git a/main/4-language-usage/5-exception-handling/g-5020/index.html b/main/4-language-usage/5-exception-handling/g-5020/index.html
index c0620c0a..dc40ac5f 100644
--- a/main/4-language-usage/5-exception-handling/g-5020/index.html
+++ b/main/4-language-usage/5-exception-handling/g-5020/index.html
@@ -3485,8 +3485,8 @@ Example (bad)
when too_many_rows then
my_package.some_further_processing();
when others then
- if sqlcode = co_no_data_found then
- null;
+ if sqlcode = co_no_data_found then
+ null;
end if;
end;
/
@@ -3505,8 +3505,8 @@ Example (good)
exception
when too_many_rows then
my_package.some_further_processing();
- when no_data_found then
- null; -- handle no_data_found
+ when no_data_found then
+ null; -- handle no_data_found
end;
/
diff --git a/main/4-language-usage/5-exception-handling/g-5030/index.html b/main/4-language-usage/5-exception-handling/g-5030/index.html
index c621e65f..f0c0e717 100644
--- a/main/4-language-usage/5-exception-handling/g-5030/index.html
+++ b/main/4-language-usage/5-exception-handling/g-5030/index.html
@@ -3485,8 +3485,8 @@ Example (bad)
18
19declare
l_dummy dual.dummy%type;
- no_data_found exception; -- violates also naming convention G-9113
- co_rownum constant simple_integer := 0;
+ no_data_found exception; -- violates also naming convention G-9113
+ co_rownum constant simple_integer := 0;
co_no_data_found constant types_up.short_text_type := 'no_data_found';
begin
select dummy
@@ -3495,8 +3495,8 @@ Example (bad)
where rownum = co_rownum;
if l_dummy is null then
- raise no_data_found; -- NOSONAR: consequential error, violates G-5070
- end if;
+ raise no_data_found; -- NOSONAR: consequential error, violates G-5070
+ end if;
exception
when no_data_found then
sys.dbms_output.put_line(co_no_data_found);
@@ -3539,8 +3539,8 @@ Example (good)
21
22
| declare
l_dummy dual.dummy%type;
- e_empty_value exception;
- co_rownum constant simple_integer := 0;
+ e_empty_value exception;
+ co_rownum constant simple_integer := 0;
co_empty_value constant types_up.short_text_type := 'empty_value';
co_no_data_found constant types_up.short_text_type := 'no_data_found';
begin
@@ -3550,8 +3550,8 @@ Example (good)
where rownum = co_rownum;
if l_dummy is null then
- raise e_empty_value;
- end if;
+ raise e_empty_value;
+ end if;
exception
when e_empty_value then
sys.dbms_output.put_line(co_empty_value);
diff --git a/main/4-language-usage/5-exception-handling/g-5040/index.html b/main/4-language-usage/5-exception-handling/g-5040/index.html
index f9f16225..db34a78c 100644
--- a/main/4-language-usage/5-exception-handling/g-5040/index.html
+++ b/main/4-language-usage/5-exception-handling/g-5040/index.html
@@ -3474,8 +3474,8 @@ Example (bad)
7
| begin
my_package.some_processing();
exception
- when others then
- my_package.some_further_processing();
+ when others then
+ my_package.some_further_processing();
end;
/
|
@@ -3489,8 +3489,8 @@ Example (good)
7begin
my_package.some_processing();
exception
- when dup_val_on_index then
- my_package.some_further_processing();
+ when dup_val_on_index then
+ my_package.some_further_processing();
end;
/
|
@@ -3505,10 +3505,10 @@ Example (good)
8begin
my_package.some_processing();
exception
- when others then
- logger.log_error('Unhandled Exception');
- raise;
-end;
+ when others then
+ logger.log_error('Unhandled Exception');
+ raise;
+end;
/
|
diff --git a/main/4-language-usage/5-exception-handling/g-5050/index.html b/main/4-language-usage/5-exception-handling/g-5050/index.html
index 7da2ca43..33b223d8 100644
--- a/main/4-language-usage/5-exception-handling/g-5050/index.html
+++ b/main/4-language-usage/5-exception-handling/g-5050/index.html
@@ -3472,8 +3472,8 @@ Example (bad)
6declare
co_invalid_emp_text constant types_up.text := 'Invalid employee_id';
begin
- raise_application_error(-20501 /* violates also G-1010 */,co_invalid_emp_text);
-end;
+ raise_application_error(-20501 /* violates also G-1010 */,co_invalid_emp_text);
+end;
/
|
Example (good)
@@ -3481,8 +3481,8 @@ Example (good)
2
3
4begin
- err_up.raise(in_error => err.co_invalid_employee_id);
-end;
+ err_up.raise(in_error => err.co_invalid_employee_id);
+end;
/
|
diff --git a/main/4-language-usage/5-exception-handling/g-5060/index.html b/main/4-language-usage/5-exception-handling/g-5060/index.html
index 56b9cfd7..18220673 100644
--- a/main/4-language-usage/5-exception-handling/g-5060/index.html
+++ b/main/4-language-usage/5-exception-handling/g-5060/index.html
@@ -3486,9 +3486,9 @@ Example (bad)
co_id constant departments.department_id%type := in_id;
l_department_name departments.department_name%type;
begin
- select department_name
- into l_department_name
- from departments
+ select department_name
+ into l_department_name
+ from departments
where department_id = co_id;
return l_department_name;
@@ -3522,18 +3522,18 @@ Example (good)
co_id constant departments.department_id%type := in_id;
l_department_name departments.department_name%type;
begin
- select department_name
- into l_department_name
- from departments
+ select department_name
+ into l_department_name
+ from departments
where department_id = co_id;
return l_department_name;
- exception
- when no_data_found then
- return null;
- when too_many_rows then
- raise;
- end name_by_id;
+ exception
+ when no_data_found then
+ return null;
+ when too_many_rows then
+ raise;
+ end name_by_id;
end department_api;
/
diff --git a/main/4-language-usage/5-exception-handling/g-5070/index.html b/main/4-language-usage/5-exception-handling/g-5070/index.html
index fe5ced3e..9ae20e1b 100644
--- a/main/4-language-usage/5-exception-handling/g-5070/index.html
+++ b/main/4-language-usage/5-exception-handling/g-5070/index.html
@@ -3470,8 +3470,8 @@ Example (bad)
2
3
4begin
- raise no_data_found;
-end;
+ raise no_data_found;
+end;
/
|
Example (good)
@@ -3483,8 +3483,8 @@ Example (good)
6declare
e_my_exception exception;
begin
- raise e_my_exception;
-end;
+ raise e_my_exception;
+end;
/
|
diff --git a/main/4-language-usage/5-exception-handling/g-5080/index.html b/main/4-language-usage/5-exception-handling/g-5080/index.html
index c2ff8723..3a7e26a5 100644
--- a/main/4-language-usage/5-exception-handling/g-5080/index.html
+++ b/main/4-language-usage/5-exception-handling/g-5080/index.html
@@ -3505,8 +3505,8 @@ Example (bad)
when zero_divide then
null; -- ignore
when others then
- logging_package.log_error(co_error_label || sqlerrm);
- raise;
+ logging_package.log_error(co_error_label || sqlerrm);
+ raise;
end discount_and_recalculate;
end order_api;
/
@@ -3561,10 +3561,10 @@ Example (good)
when others then
logging_package.log_error(
co_error_label
- || sqlerrm
- || co_backtrace_label
- || sys.dbms_utility.format_error_backtrace
- );
+ || sqlerrm
+ || co_backtrace_label
+ || sys.dbms_utility.format_error_backtrace
+ );
raise;
end discount_and_recalculate;
end order_api;
diff --git a/main/4-language-usage/6-dynamic-sql/g-6010/index.html b/main/4-language-usage/6-dynamic-sql/g-6010/index.html
index 6c3934d9..669416ce 100644
--- a/main/4-language-usage/6-dynamic-sql/g-6010/index.html
+++ b/main/4-language-usage/6-dynamic-sql/g-6010/index.html
@@ -3473,8 +3473,8 @@ Example (bad)
7declare
l_next_val employees.employee_id%type;
begin
- execute immediate 'select employees_seq.nextval from dual'
- into l_next_val;
+ execute immediate 'select employees_seq.nextval from dual'
+ into l_next_val;
end;
/
|
@@ -3491,8 +3491,8 @@ Example (good)
co_sql constant types_up.big_string_type :=
'select employees_seq.nextval from dual';
begin
- execute immediate co_sql into l_next_val;
-end;
+ execute immediate co_sql into l_next_val;
+end;
/
diff --git a/main/4-language-usage/6-dynamic-sql/g-6020/index.html b/main/4-language-usage/6-dynamic-sql/g-6020/index.html
index fe602fee..7147b277 100644
--- a/main/4-language-usage/6-dynamic-sql/g-6020/index.html
+++ b/main/4-language-usage/6-dynamic-sql/g-6020/index.html
@@ -3498,8 +3498,8 @@ Example (bad)
returning salary into :3';
begin
execute immediate co_sql_stmt
- using co_increase_pct,co_employee_id,out out_new_salary;
- end upd_salary;
+ using co_increase_pct,co_employee_id,out out_new_salary;
+ end upd_salary;
end employee_api;
/
@@ -3539,8 +3539,8 @@ Example (good)
begin
execute immediate co_sql_stmt
using co_increase_pct,co_employee_id
- returning into out_new_salary;
- end upd_salary;
+ returning into out_new_salary;
+ end upd_salary;
end employee_api;
/
diff --git a/main/4-language-usage/7-stored-objects/1-general/g-7110/index.html b/main/4-language-usage/7-stored-objects/1-general/g-7110/index.html
index a8b765ad..8220b673 100644
--- a/main/4-language-usage/7-stored-objects/1-general/g-7110/index.html
+++ b/main/4-language-usage/7-stored-objects/1-general/g-7110/index.html
@@ -3477,8 +3477,8 @@ Example (bad)
r_employee employees%rowtype;
co_id constant employees.employee_id%type := 107;
begin
- employee_api.employee_by_id(r_employee,co_id);
-end;
+ employee_api.employee_by_id(r_employee,co_id);
+end;
/
Example (good)
@@ -3496,9 +3496,9 @@ Example (good)
co_id constant employees.employee_id%type := 107;
begin
employee_api.employee_by_id(
- out_row => r_employee
- ,in_employee_id => co_id
- );
+ out_row => r_employee
+ ,in_employee_id => co_id
+ );
end;
/
diff --git a/main/4-language-usage/7-stored-objects/1-general/g-7120/index.html b/main/4-language-usage/7-stored-objects/1-general/g-7120/index.html
index 2f31a00a..2a1ba67e 100644
--- a/main/4-language-usage/7-stored-objects/1-general/g-7120/index.html
+++ b/main/4-language-usage/7-stored-objects/1-general/g-7120/index.html
@@ -3485,10 +3485,8 @@ Example (bad)
17
18
19
-20
-21create or replace package body employee_api is
- function -- NOSONAR: non-deterministic
- employee_by_id(in_employee_id in integer)
+20
| create or replace package body employee_api is
+ function employee_by_id(in_employee_id in integer) -- NOSONAR: non-deterministic
return employees%rowtype is
co_employee_id constant employees.employee_id%type := in_employee_id;
r_employee employees%rowtype;
@@ -3504,9 +3502,9 @@ Example (bad)
null;
when too_many_rows then
raise;
- end;
-end;
-/
+ end;
+end;
+/
|
Example (good)
1
@@ -3545,9 +3543,9 @@ Example (good)
null;
when too_many_rows then
raise;
- end employee_by_id;
-end employee_api;
-/
+ end employee_by_id;
+end employee_api;
+/
|
diff --git a/main/4-language-usage/7-stored-objects/1-general/g-7125/index.html b/main/4-language-usage/7-stored-objects/1-general/g-7125/index.html
index 8c9af34b..879701d6 100644
--- a/main/4-language-usage/7-stored-objects/1-general/g-7125/index.html
+++ b/main/4-language-usage/7-stored-objects/1-general/g-7125/index.html
@@ -3485,8 +3485,8 @@ Example (bad)
17
18
19
-20create package body employee_api is
- function employee_by_id(in_employee_id in integer) -- NOSONAR: non-deterministic
+20
| create package body employee_api is
+ function employee_by_id(in_employee_id in integer) -- NOSONAR: non-deterministic
return employees%rowtype is
co_employee_id constant employees.employee_id%type := in_employee_id;
r_employee employees%rowtype;
@@ -3526,8 +3526,8 @@ Example (good)
17
18
19
-20
| create or replace package body employee_api is
- function employee_by_id(in_employee_id in integer) -- NOSONAR: non-deterministic
+20
| create or replace package body employee_api is
+ function employee_by_id(in_employee_id in integer) -- NOSONAR: non-deterministic
return employees%rowtype is
co_employee_id constant employees.employee_id%type := in_employee_id;
r_employee employees%rowtype;
diff --git a/main/4-language-usage/7-stored-objects/1-general/g-7130/index.html b/main/4-language-usage/7-stored-objects/1-general/g-7130/index.html
index 67fc3cb7..ce45ad18 100644
--- a/main/4-language-usage/7-stored-objects/1-general/g-7130/index.html
+++ b/main/4-language-usage/7-stored-objects/1-general/g-7130/index.html
@@ -3500,12 +3500,12 @@ Example (bad)
co_employee_id constant employees.employee_id%type := in_employee_id;
r_emp employees%rowtype;
- function commission return number is -- NOSONAR: non-deterministic
- l_commission employees.salary%type := 0;
+ function commission return number is -- NOSONAR: non-deterministic
+ l_commission employees.salary%type := 0;
begin
- if r_emp.commission_pct is not null then
- l_commission := r_emp.salary * r_emp.commission_pct;
- end if;
+ if r_emp.commission_pct is not null then
+ l_commission := r_emp.salary * r_emp.commission_pct;
+ end if;
return l_commission;
end commission;
@@ -3571,9 +3571,9 @@ Example (good)
r_emp employees%rowtype;
function commission(
- in_salary in number
- ,in_comm_pct in number
- )
+ in_salary in number
+ ,in_comm_pct in number
+ )
return number
deterministic
is
@@ -3581,9 +3581,9 @@ Example (good)
co_comm_pct constant employees.commission_pct%type := in_comm_pct;
l_commission employees.salary%type := 0;
begin
- if in_comm_pct is not null then
- l_commission := co_salary * co_comm_pct;
- end if;
+ if in_comm_pct is not null then
+ l_commission := co_salary * co_comm_pct;
+ end if;
return l_commission;
end commission;
diff --git a/main/4-language-usage/7-stored-objects/1-general/g-7140/index.html b/main/4-language-usage/7-stored-objects/1-general/g-7140/index.html
index f0926948..ba5b71ec 100644
--- a/main/4-language-usage/7-stored-objects/1-general/g-7140/index.html
+++ b/main/4-language-usage/7-stored-objects/1-general/g-7140/index.html
@@ -3483,8 +3483,8 @@ Example (bad)
13
14
| create or replace package body my_package is
procedure my_procedure is
- function my_func return number
- deterministic
+ function my_func return number
+ deterministic
is
co_true constant integer := 1;
begin
@@ -3512,16 +3512,16 @@ Example (good)
13
14
| create or replace package body my_package is
procedure my_procedure is
- function my_func return number
- deterministic
+ function my_func return number
+ deterministic
is
co_true constant integer := 1;
begin
return co_true;
end my_func;
begin
- sys.dbms_output.put_line(my_func());
- end my_procedure;
+ sys.dbms_output.put_line(my_func());
+ end my_procedure;
end my_package;
/
|
diff --git a/main/4-language-usage/7-stored-objects/1-general/g-7150/index.html b/main/4-language-usage/7-stored-objects/1-general/g-7150/index.html
index 00152fb9..5ed8fc98 100644
--- a/main/4-language-usage/7-stored-objects/1-general/g-7150/index.html
+++ b/main/4-language-usage/7-stored-objects/1-general/g-7150/index.html
@@ -3492,8 +3492,8 @@ Example (bad)
24create or replace package body department_api is
function name_by_id( -- NOSONAR: non-deterministic
in_department_id in integer
- ,in_manager in employees%rowtype
- )
+ ,in_manager in employees%rowtype
+ )
return departments.department_name%type is
co_department_id constant departments.department_id%type := in_department_id;
l_department_name departments.department_name%type;
diff --git a/main/4-language-usage/7-stored-objects/1-general/g-7160/index.html b/main/4-language-usage/7-stored-objects/1-general/g-7160/index.html
index 055a031e..c87a481b 100644
--- a/main/4-language-usage/7-stored-objects/1-general/g-7160/index.html
+++ b/main/4-language-usage/7-stored-objects/1-general/g-7160/index.html
@@ -3476,11 +3476,11 @@ Example (bad)
8
9
| create or replace package employee_api is
procedure store(io_id in out employees.id%type
- ,in_first_name employees.first_name%type
- ,in_last_name employees.last_name%type
- ,in_email employees.email%type
- ,in_department_id employees.department_id%type
- ,out_success out pls_integer);
+ ,in_first_name employees.first_name%type
+ ,in_last_name employees.last_name%type
+ ,in_email employees.email%type
+ ,in_department_id employees.department_id%type
+ ,out_success out pls_integer);
end employee_up;
/
|
@@ -3495,11 +3495,11 @@ Example (good)
8
9create or replace package employee_api is
procedure store(io_id in out employees.id%type
- ,in_first_name in employees.first_name%type
- ,in_last_name in employees.last_name%type
- ,in_email in employees.email%type
- ,in_department_id in employees.department_id%type
- ,out_success out pls_integer);
+ ,in_first_name in employees.first_name%type
+ ,in_last_name in employees.last_name%type
+ ,in_email in employees.email%type
+ ,in_department_id in employees.department_id%type
+ ,out_success out pls_integer);
end employee_up;
/
|
diff --git a/main/4-language-usage/7-stored-objects/1-general/g-7170/index.html b/main/4-language-usage/7-stored-objects/1-general/g-7170/index.html
index 757813cb..82ef2afe 100644
--- a/main/4-language-usage/7-stored-objects/1-general/g-7170/index.html
+++ b/main/4-language-usage/7-stored-objects/1-general/g-7170/index.html
@@ -3510,17 +3510,17 @@ Example (bad)
38
39create or replace package body employee_up is
procedure rcv_emp(
- io_first_name in out employees.first_name%type
- ,io_last_name in out employees.last_name%type
- ,io_email in out employees.email%type
- ,io_phone_number in out employees.phone_number%type
- ,io_hire_date in out employees.hire_date%type
- ,io_job_id in out employees.job_id%type
- ,io_salary in out employees.salary%type
- ,io_commission_pct in out employees.commission_pct%type
- ,io_manager_id in out employees.manager_id%type
- ,io_department_id in out employees.department_id%type
- ,in_wait in integer
+ io_first_name in out employees.first_name%type
+ ,io_last_name in out employees.last_name%type
+ ,io_email in out employees.email%type
+ ,io_phone_number in out employees.phone_number%type
+ ,io_hire_date in out employees.hire_date%type
+ ,io_job_id in out employees.job_id%type
+ ,io_salary in out employees.salary%type
+ ,io_commission_pct in out employees.commission_pct%type
+ ,io_manager_id in out employees.manager_id%type
+ ,io_department_id in out employees.department_id%type
+ ,in_wait in integer
) is
l_status pls_integer;
co_dflt_pipe_name constant string(30 char) := 'MyPipe';
@@ -3589,17 +3589,17 @@ Example (good)
38
39
| create or replace package body employee_up is
procedure rcv_emp(
- out_first_name out employees.first_name%type
- ,out_last_name out employees.last_name%type
- ,out_email out employees.email%type
- ,out_phone_number out employees.phone_number%type
- ,out_hire_date out employees.hire_date%type
- ,out_job_id out employees.job_id%type
- ,out_salary out employees.salary%type
- ,out_commission_pct out employees.commission_pct%type
- ,out_manager_id out employees.manager_id%type
- ,out_department_id out employees.department_id%type
- ,in_wait in integer
+ out_first_name out employees.first_name%type
+ ,out_last_name out employees.last_name%type
+ ,out_email out employees.email%type
+ ,out_phone_number out employees.phone_number%type
+ ,out_hire_date out employees.hire_date%type
+ ,out_job_id out employees.job_id%type
+ ,out_salary out employees.salary%type
+ ,out_commission_pct out employees.commission_pct%type
+ ,out_manager_id out employees.manager_id%type
+ ,out_department_id out employees.department_id%type
+ ,in_wait in integer
) is
l_status pls_integer;
co_dflt_pipe_name constant string(30 char) := 'MyPipe';
diff --git a/main/4-language-usage/7-stored-objects/2-packages/g-7220/index.html b/main/4-language-usage/7-stored-objects/2-packages/g-7220/index.html
index 07232552..cf5a9d40 100644
--- a/main/4-language-usage/7-stored-objects/2-packages/g-7220/index.html
+++ b/main/4-language-usage/7-stored-objects/2-packages/g-7220/index.html
@@ -3505,8 +3505,8 @@ Example (bad)
/
create or replace package body department_api is
- function does_exist(in_department_id in departments.department_id%type) -- violates also G-7460
- return boolean is
+ function does_exist(in_department_id in departments.department_id%type) -- violates also G-7460
+ return boolean is
co_department_id constant departments.department_id%type := in_department_id;
l_return pls_integer;
begin
@@ -3577,8 +3577,8 @@ Example (good)
/
create or replace package body department_api is
- function does_exist(in_department_id in departments.department_id%type) -- NOSONAR: non-deterministic
- return boolean;
+ function does_exist(in_department_id in departments.department_id%type) -- NOSONAR: non-deterministic
+ return boolean;
procedure del(in_department_id in departments.department_id%type) is
co_department_id constant departments.department_id%type := in_department_id;
@@ -3588,8 +3588,8 @@ Example (good)
end if;
end del;
- function does_exist(in_department_id in departments.department_id%type) -- NOSONAR: non-deterministic
- return boolean is
+ function does_exist(in_department_id in departments.department_id%type) -- NOSONAR: non-deterministic
+ return boolean is
co_department_id constant departments.department_id%type := in_department_id;
l_return pls_integer;
begin
diff --git a/main/4-language-usage/7-stored-objects/2-packages/g-7230/index.html b/main/4-language-usage/7-stored-objects/2-packages/g-7230/index.html
index 16d678d6..58a284ef 100644
--- a/main/4-language-usage/7-stored-objects/2-packages/g-7230/index.html
+++ b/main/4-language-usage/7-stored-objects/2-packages/g-7230/index.html
@@ -3495,8 +3495,8 @@ Example (bad)
24
| create or replace package employee_api as
co_min_increase constant types_up.sal_increase_type := 0.01;
co_max_increase constant types_up.sal_increase_type := 0.5;
- g_salary_increase types_up.sal_increase_type := co_min_increase;
-
+ g_salary_increase types_up.sal_increase_type := co_min_increase;
+
procedure set_salary_increase(in_increase in types_up.sal_increase_type);
function salary_increase return types_up.sal_increase_type; -- NOSONAR: non-deterministic
end employee_api;
@@ -3568,8 +3568,8 @@ Example (good)
/
create or replace package body employee_api as
- g_salary_increase types_up.sal_increase_type;
-
+ g_salary_increase types_up.sal_increase_type;
+
procedure init;
procedure set_salary_increase(in_increase in types_up.sal_increase_type) is
diff --git a/main/4-language-usage/7-stored-objects/2-packages/g-7250/index.html b/main/4-language-usage/7-stored-objects/2-packages/g-7250/index.html
index c6b41f94..40d13276 100644
--- a/main/4-language-usage/7-stored-objects/2-packages/g-7250/index.html
+++ b/main/4-language-usage/7-stored-objects/2-packages/g-7250/index.html
@@ -3504,10 +3504,10 @@ Example (bad)
end salary_increase;
begin
- g_salary_increase := constants_up.min_salary_increase();
-
- return; -- violates also G-1040
-
+ g_salary_increase := constants_up.min_salary_increase();
+
+ return; -- violates also G-1040
+
set_salary_increase(constants_up.min_salary_increase()); -- dead code
end employee_api;
/
@@ -3547,8 +3547,8 @@ Example (good)
end salary_increase;
begin
- g_salary_increase := constants_up.min_salary_increase();
-end employee_api;
+ g_salary_increase := constants_up.min_salary_increase();
+end employee_api;
/
|
diff --git a/main/4-language-usage/7-stored-objects/3-procedures/g-7310/index.html b/main/4-language-usage/7-stored-objects/3-procedures/g-7310/index.html
index b0fcb942..c4944ce4 100644
--- a/main/4-language-usage/7-stored-objects/3-procedures/g-7310/index.html
+++ b/main/4-language-usage/7-stored-objects/3-procedures/g-7310/index.html
@@ -3471,8 +3471,8 @@ Example (bad)
2
3
4
-5create or replace procedure my_procedure is
-begin
+5
| create or replace procedure my_procedure is
+begin
null;
end my_procedure;
/
@@ -3495,8 +3495,8 @@ Example (good)
/
create or replace package body my_package is
- procedure my_procedure is
- begin
+ procedure my_procedure is
+ begin
null;
end my_procedure;
end my_package;
diff --git a/main/4-language-usage/7-stored-objects/3-procedures/g-7320/index.html b/main/4-language-usage/7-stored-objects/3-procedures/g-7320/index.html
index f61ccfe5..9dc9a317 100644
--- a/main/4-language-usage/7-stored-objects/3-procedures/g-7320/index.html
+++ b/main/4-language-usage/7-stored-objects/3-procedures/g-7320/index.html
@@ -3490,8 +3490,8 @@ Example (bad)
<<mod7_loop>>
loop
if mod(l_idx,co_modulo) = 0 then
- return;
- end if;
+ return;
+ end if;
l_idx := l_idx + 1;
end loop mod7_loop;
@@ -3520,8 +3520,8 @@ Example (good)
begin
<<mod7_loop>>
loop
- exit mod7_loop when mod(l_idx,co_modulo) = 0;
-
+ exit mod7_loop when mod(l_idx,co_modulo) = 0;
+
l_idx := l_idx + 1;
end loop mod7_loop;
end my_procedure;
diff --git a/main/4-language-usage/7-stored-objects/3-procedures/g-7330/index.html b/main/4-language-usage/7-stored-objects/3-procedures/g-7330/index.html
index d32eef98..059ddfcc 100644
--- a/main/4-language-usage/7-stored-objects/3-procedures/g-7330/index.html
+++ b/main/4-language-usage/7-stored-objects/3-procedures/g-7330/index.html
@@ -3481,8 +3481,8 @@ Example (bad)
13
| create or replace package body my_package is
procedure greet(
in_name in varchar2
- ,out_greeting out varchar2 -- violates also G-7150
- ) is
+ ,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, ';
@@ -3507,13 +3507,13 @@ Example (good)
12
| create or replace package body my_package is
procedure greet(
in_name in varchar2
- ,out_greeting out varchar2
- ) is
+ ,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;
+ out_greeting := co_hello || co_name;
+ end greet;
end my_package;
/
|
diff --git a/main/4-language-usage/7-stored-objects/4-functions/g-7410/index.html b/main/4-language-usage/7-stored-objects/4-functions/g-7410/index.html
index 21a737e0..1c0c434b 100644
--- a/main/4-language-usage/7-stored-objects/4-functions/g-7410/index.html
+++ b/main/4-language-usage/7-stored-objects/4-functions/g-7410/index.html
@@ -3473,8 +3473,8 @@ Example (bad)
4
5
6
-7create or replace function my_function return varchar2
- deterministic
+7
| create or replace function my_function return varchar2
+ deterministic
is
begin
return null;
@@ -3491,8 +3491,8 @@ Example (good)
7
8
9
| create or replace package body my_package is
- function my_function return varchar2
- deterministic
+ function my_function return varchar2
+ deterministic
is
begin
return null;
diff --git a/main/4-language-usage/7-stored-objects/4-functions/g-7420/index.html b/main/4-language-usage/7-stored-objects/4-functions/g-7420/index.html
index 772ce8d9..93971685 100644
--- a/main/4-language-usage/7-stored-objects/4-functions/g-7420/index.html
+++ b/main/4-language-usage/7-stored-objects/4-functions/g-7420/index.html
@@ -3501,8 +3501,8 @@ Example (bad)
loop
l_ret := l_ret + i;
if i = in_to then
- return l_ret;
- end if;
+ return l_ret;
+ end if;
end loop for_loop;
end my_function;
end my_package;
@@ -3542,8 +3542,8 @@ Example (good)
loop
l_ret := l_ret + i;
end loop for_loop;
- return l_ret;
- end my_function;
+ return l_ret;
+ end my_function;
end my_package;
/
|
diff --git a/main/4-language-usage/7-stored-objects/4-functions/g-7430/index.html b/main/4-language-usage/7-stored-objects/4-functions/g-7430/index.html
index 5788d657..e43091ce 100644
--- a/main/4-language-usage/7-stored-objects/4-functions/g-7430/index.html
+++ b/main/4-language-usage/7-stored-objects/4-functions/g-7430/index.html
@@ -3500,10 +3500,10 @@ Example (bad)
co_yes constant pls_integer := 1;
begin
if in_value = co_yes then
- return true;
- else
- return false;
- end if;
+ return true;
+ else
+ return false;
+ end if;
end my_function;
end my_package;
/
@@ -3538,8 +3538,8 @@ Example (better)
l_ret := false;
end if;
- return l_ret;
- end my_function;
+ return l_ret;
+ end my_function;
end my_package;
/
@@ -3559,8 +3559,8 @@ Example (good)
is
co_yes constant pls_integer := 1;
begin
- return in_value = co_yes;
- end my_function;
+ return in_value = co_yes;
+ end my_function;
end my_package;
/
diff --git a/main/4-language-usage/7-stored-objects/4-functions/g-7440/index.html b/main/4-language-usage/7-stored-objects/4-functions/g-7440/index.html
index bdfa94d5..434cbf86 100644
--- a/main/4-language-usage/7-stored-objects/4-functions/g-7440/index.html
+++ b/main/4-language-usage/7-stored-objects/4-functions/g-7440/index.html
@@ -3476,8 +3476,8 @@ Example (bad)
8
9
10create or replace package body my_package is
- function my_function(out_date out date) return boolean
- deterministic
+ function my_function(out_date out date) return boolean
+ deterministic
is
begin
out_date := sysdate;
@@ -3496,8 +3496,8 @@ Example (good)
7
8
9
| create or replace package body my_package is
- function my_function return date
- deterministic
+ function my_function return date
+ deterministic
is
begin
return sysdate;
diff --git a/main/4-language-usage/7-stored-objects/4-functions/g-7450/index.html b/main/4-language-usage/7-stored-objects/4-functions/g-7450/index.html
index 425f4e6b..edb8665c 100644
--- a/main/4-language-usage/7-stored-objects/4-functions/g-7450/index.html
+++ b/main/4-language-usage/7-stored-objects/4-functions/g-7450/index.html
@@ -3479,8 +3479,8 @@ Example (bad)
deterministic
is
begin
- return null;
- end my_function;
+ return null;
+ end my_function;
end my_package;
/
|
@@ -3498,8 +3498,8 @@ Example (good)
deterministic
is
begin
- return true;
- end my_function;
+ return true;
+ end my_function;
end my_package;
/
diff --git a/main/4-language-usage/7-stored-objects/4-functions/g-7460/index.html b/main/4-language-usage/7-stored-objects/4-functions/g-7460/index.html
index cc733c71..23fd01c3 100644
--- a/main/4-language-usage/7-stored-objects/4-functions/g-7460/index.html
+++ b/main/4-language-usage/7-stored-objects/4-functions/g-7460/index.html
@@ -3472,8 +3472,8 @@ Example (bad)
4
5create or replace package department_api is
function name_by_id(in_department_id in departments.department_id%type)
- return departments.department_name%type;
-end department_api;
+ return departments.department_name%type;
+end department_api;
/
|
Example (good)
@@ -3484,9 +3484,9 @@ Example (good)
5
6create or replace package department_api is
function name_by_id(in_department_id in departments.department_id%type)
- return departments.department_name%type
- deterministic;
-end department_api;
+ return departments.department_name%type
+ deterministic;
+end department_api;
/
|
diff --git a/main/4-language-usage/7-stored-objects/5-oracle-supplied-packages/g-7510/index.html b/main/4-language-usage/7-stored-objects/5-oracle-supplied-packages/g-7510/index.html
index 7c90324a..6a611119 100644
--- a/main/4-language-usage/7-stored-objects/5-oracle-supplied-packages/g-7510/index.html
+++ b/main/4-language-usage/7-stored-objects/5-oracle-supplied-packages/g-7510/index.html
@@ -3474,8 +3474,8 @@ Example (bad)
6declare
co_hello_world constant string(30 char) := 'Hello World';
begin
- dbms_output.put_line(co_hello_world);
-end;
+ dbms_output.put_line(co_hello_world);
+end;
/
|
Example (good)
@@ -3487,8 +3487,8 @@ Example (good)
6declare
co_hello_world constant string(30 char) := 'Hello World';
begin
- sys.dbms_output.put_line(co_hello_world);
-end;
+ sys.dbms_output.put_line(co_hello_world);
+end;
/
|
diff --git a/main/4-language-usage/7-stored-objects/7-triggers/g-7710/index.html b/main/4-language-usage/7-stored-objects/7-triggers/g-7710/index.html
index 3d4ed170..ed89398f 100644
--- a/main/4-language-usage/7-stored-objects/7-triggers/g-7710/index.html
+++ b/main/4-language-usage/7-stored-objects/7-triggers/g-7710/index.html
@@ -3498,8 +3498,8 @@ Example (bad)
30create or replace trigger dept_br_u
before update on departments for each row
begin
- insert into departments_hist (
- department_id
+ insert into departments_hist (
+ department_id
,department_name
,manager_id
,location_id
@@ -3513,10 +3513,10 @@ Example (bad)
end;
/
create or replace trigger dept_hist_br_i
-before insert on departments_hist for each row
-begin
- insert into departments_log (
- department_id
+before insert on departments_hist for each row
+begin
+ insert into departments_log (
+ department_id
,department_name
,modification_date)
values (
@@ -3556,8 +3556,8 @@ Example (good)
27
| create or replace trigger dept_br_u
before update on departments for each row
begin
- insert into departments_hist (
- department_id
+ insert into departments_hist (
+ department_id
,department_name
,manager_id
,location_id
@@ -3569,8 +3569,8 @@ Example (good)
,:old.location_id
,sysdate);
- insert into departments_log (
- department_id
+ insert into departments_log (
+ department_id
,department_name
,modification_date)
values (
diff --git a/main/4-language-usage/7-stored-objects/7-triggers/g-7720/index.html b/main/4-language-usage/7-stored-objects/7-triggers/g-7720/index.html
index 58fc3fd4..55378e42 100644
--- a/main/4-language-usage/7-stored-objects/7-triggers/g-7720/index.html
+++ b/main/4-language-usage/7-stored-objects/7-triggers/g-7720/index.html
@@ -3481,8 +3481,8 @@ Example (bad)
13
14
15
| create or replace trigger dept_br_u
-before update of department_id or update of department_name -- violates also G-7730
-on departments for each row
+before update of department_id or update of department_name -- violates also G-7730
+on departments for each row
begin
-- will only fire on updates of department_name
insert into departments_log (
@@ -3511,8 +3511,8 @@ Example (good)
12
13
14
| create or replace trigger dept_br_u
-before update of department_id,department_name
-on departments for each row
+before update of department_id,department_name
+on departments for each row
begin
insert into departments_log (
department_id
diff --git a/main/4-language-usage/7-stored-objects/7-triggers/g-7730/index.html b/main/4-language-usage/7-stored-objects/7-triggers/g-7730/index.html
index cec1caa1..c6591420 100644
--- a/main/4-language-usage/7-stored-objects/7-triggers/g-7730/index.html
+++ b/main/4-language-usage/7-stored-objects/7-triggers/g-7730/index.html
@@ -3479,8 +3479,8 @@ Example (bad)
10
11
12
| create or replace trigger dept_br_iu
-before insert or update
-on departments for each row
+before insert or update
+on departments for each row
begin
if inserting then
:new.created_date := sysdate;
@@ -3507,16 +3507,16 @@ Example (good)
13
14
15
| create or replace trigger dept_br_i
-before insert
-on departments for each row
+before insert
+on departments for each row
begin
:new.created_date := sysdate;
end;
/
create or replace trigger dept_br_u
-before update
-on departments for each row
+before update
+on departments for each row
begin
:new.changed_date := sysdate;
end;
diff --git a/main/4-language-usage/7-stored-objects/7-triggers/g-7740/index.html b/main/4-language-usage/7-stored-objects/7-triggers/g-7740/index.html
index 9d75a005..37c07cef 100644
--- a/main/4-language-usage/7-stored-objects/7-triggers/g-7740/index.html
+++ b/main/4-language-usage/7-stored-objects/7-triggers/g-7740/index.html
@@ -3498,12 +3498,12 @@ Example (bad)
11
12
13
| create or replace trigger dept_br_iu
-before insert or update -- NOSONAR: G-7730
-on departments for each row
+before insert or update -- NOSONAR: G-7730
+on departments for each row
begin
if inserting then
- :new.department_id := department_seq.nextval; -- NOSONAR: G-3150
- :new.created_date := sysdate;
+ :new.department_id := department_seq.nextval; -- NOSONAR: G-3150
+ :new.created_date := sysdate;
end if;
if updating then
:new.changed_date := sysdate;
@@ -3528,17 +3528,17 @@ Example (good)
14
15
16
| create or replace trigger dept_br_i
-before insert
-on departments for each row
+before insert
+on departments for each row
begin
- :new.department_id := department_seq.nextval; -- NOSONAR: G-3150
- :new.created_date := sysdate;
+ :new.department_id := department_seq.nextval; -- NOSONAR: G-3150
+ :new.created_date := sysdate;
end;
/
create or replace trigger dept_br_u
-before update
-on departments for each row
+before update
+on departments for each row
begin
:new.changed_date := sysdate;
end;
diff --git a/main/4-language-usage/7-stored-objects/8-sequences/g-7810/index.html b/main/4-language-usage/7-stored-objects/8-sequences/g-7810/index.html
index 3ddf255d..b8444ccf 100644
--- a/main/4-language-usage/7-stored-objects/8-sequences/g-7810/index.html
+++ b/main/4-language-usage/7-stored-objects/8-sequences/g-7810/index.html
@@ -3477,8 +3477,8 @@ Example (bad)
9
| declare
l_sequence_number employees.employee_id%type;
begin
- select employees_seq.nextval
- into l_sequence_number
+ select employees_seq.nextval
+ into l_sequence_number
from dual;
my_package.do_something(l_sequence_number);
end;
@@ -3494,8 +3494,8 @@ Example (good)
7
| declare
l_sequence_number employees.employee_id%type;
begin
- l_sequence_number := employees_seq.nextval;
- my_package.do_something(l_sequence_number);
+ l_sequence_number := employees_seq.nextval;
+ my_package.do_something(l_sequence_number);
end;
/
|
diff --git a/main/4-language-usage/7-stored-objects/9-sql-macros/g-7910/index.html b/main/4-language-usage/7-stored-objects/9-sql-macros/g-7910/index.html
index c0ebfbcf..d7c8aa0e 100644
--- a/main/4-language-usage/7-stored-objects/9-sql-macros/g-7910/index.html
+++ b/main/4-language-usage/7-stored-objects/9-sql-macros/g-7910/index.html
@@ -3500,10 +3500,10 @@ Example (bad)
function row_generator(in_num_rows in number) -- NOSONAR: non-deterministic
return varchar2 sql_macro as
begin
- insert into function_calls(name,called_at,parameter_value)
- values ($$plsql_unit,current_timestamp,in_num_rows);
- commit;
-
+ insert into function_calls(name,called_at,parameter_value)
+ values ($$plsql_unit,current_timestamp,in_num_rows);
+ commit;
+
return 'select level as row_sequence -- NOSONAR: G-1050
from dual
connect by level <= in_num_rows';
diff --git a/main/4-language-usage/8-patterns/1-checking-the-number-of-rows/g-8110/index.html b/main/4-language-usage/8-patterns/1-checking-the-number-of-rows/g-8110/index.html
index a7e8260c..b4784cf4 100644
--- a/main/4-language-usage/8-patterns/1-checking-the-number-of-rows/g-8110/index.html
+++ b/main/4-language-usage/8-patterns/1-checking-the-number-of-rows/g-8110/index.html
@@ -3493,8 +3493,8 @@ Example (bad)
co_zero constant simple_integer := 0;
co_salary constant employees.salary%type := 5000;
begin
- select count(*)
- into l_count
+ select count(*)
+ into l_count
from employees
where salary < co_salary;
if l_count > co_zero then
@@ -3537,8 +3537,8 @@ Example (good)
for r_emp in (
select e1.employee_id
from employees e1
- where exists(
- select e2.salary
+ where exists(
+ select e2.salary
from employees e2
where e2.salary < co_salary
)
diff --git a/main/4-language-usage/8-patterns/1-checking-the-number-of-rows/g-8120/index.html b/main/4-language-usage/8-patterns/1-checking-the-number-of-rows/g-8120/index.html
index 2e632000..51b2c5a6 100644
--- a/main/4-language-usage/8-patterns/1-checking-the-number-of-rows/g-8120/index.html
+++ b/main/4-language-usage/8-patterns/1-checking-the-number-of-rows/g-8120/index.html
@@ -3490,9 +3490,9 @@ Example (bad)
from departments
where department_id = in_r_department.department_id;
- if l_count = 0 then
- insert into departments
- values in_r_department;
+ if l_count = 0 then
+ insert into departments
+ values in_r_department;
end if;
end ins;
end department_api;
@@ -3512,11 +3512,11 @@ Example (good)
11create or replace package body department_api is
procedure ins(in_r_department in departments%rowtype) is
begin
- insert into departments
- values in_r_department;
+ insert into departments
+ values in_r_department;
exception
- when dup_val_on_index then
- null; -- handle exception
+ when dup_val_on_index then
+ null; -- handle exception
end ins;
end department_api;
/
diff --git a/main/4-language-usage/8-patterns/2-access-objects-of-foreign-application-schemas/g-8210/index.html b/main/4-language-usage/8-patterns/2-access-objects-of-foreign-application-schemas/g-8210/index.html
index 4db3989e..e1465d76 100644
--- a/main/4-language-usage/8-patterns/2-access-objects-of-foreign-application-schemas/g-8210/index.html
+++ b/main/4-language-usage/8-patterns/2-access-objects-of-foreign-application-schemas/g-8210/index.html
@@ -3486,8 +3486,8 @@ Example (bad)
begin
select p.product_name
into l_product_name
- from oe.products p
- where list_price > co_price;
+ from oe.products p
+ where list_price > co_price;
exception
when no_data_found then
null; -- handle_no_data_found;
@@ -3513,16 +3513,16 @@ Example (good)
14
15
16
-17
| create synonym oe_products for oe.products;
-
+17
| create synonym oe_products for oe.products;
+
declare
l_product_name oe_products.product_name%type;
co_price constant oe_products.list_price%type := 1000;
begin
select p.product_name
into l_product_name
- from oe_products p
- where list_price > co_price;
+ from oe_products p
+ where list_price > co_price;
exception
when no_data_found then
null; -- handle_no_data_found;
diff --git a/main/4-language-usage/8-patterns/3-validating-input-parameter-size/g-8310/index.html b/main/4-language-usage/8-patterns/3-validating-input-parameter-size/g-8310/index.html
index e6db4964..288484c0 100644
--- a/main/4-language-usage/8-patterns/3-validating-input-parameter-size/g-8310/index.html
+++ b/main/4-language-usage/8-patterns/3-validating-input-parameter-size/g-8310/index.html
@@ -3509,8 +3509,8 @@ Example (bad)
27
28
| create or replace package body department_api is
function dept_by_name( -- NOSONAR: non-deterministic
- in_dept_name in departments.department_name%type
- )
+ in_dept_name in departments.department_name%type
+ )
return departments%rowtype is
r_return departments%rowtype;
co_max_dept_name_length constant integer := 20;
@@ -3563,11 +3563,11 @@ Example (good)
24
25
| create or replace package body department_api is
function dept_by_name( -- NOSONAR: non-deterministic
- in_dept_name in departments.department_name%type
- )
+ in_dept_name in departments.department_name%type
+ )
return departments%rowtype is
- co_dept_name constant departments.department_name%type not null := in_dept_name;
- r_return departments%rowtype;
+ co_dept_name constant departments.department_name%type not null := in_dept_name;
+ r_return departments%rowtype;
begin
-- get the department by name
<<trap>>
@@ -3605,8 +3605,8 @@ Example (good)
r_department := department_api.dept_by_name(co_dept_name);
post_processing;
exception
- when value_error then
- handle_error;
+ when value_error then
+ handle_error;
end;
/
|
diff --git a/main/4-language-usage/8-patterns/4-ensure-single-execution-at-a-time-of-a-program-unit/g-8410/index.html b/main/4-language-usage/8-patterns/4-ensure-single-execution-at-a-time-of-a-program-unit/g-8410/index.html
index c2634e27..1ea7559b 100644
--- a/main/4-language-usage/8-patterns/4-ensure-single-execution-at-a-time-of-a-program-unit/g-8410/index.html
+++ b/main/4-language-usage/8-patterns/4-ensure-single-execution-at-a-time-of-a-program-unit/g-8410/index.html
@@ -3521,14 +3521,14 @@ Example (bad)
co_lock_name constant app_locks.lock_name%type := in_lock_name;
begin
-- raises dup_val_on_index
- insert into app_locks (lock_name) values (co_lock_name);
- end request_lock;
+ insert into app_locks (lock_name) values (co_lock_name);
+ end request_lock;
procedure release_lock(in_lock_name in varchar2) is
co_lock_name constant app_locks.lock_name%type := in_lock_name;
begin
- delete from app_locks where lock_name = co_lock_name;
- end release_lock;
+ delete from app_locks where lock_name = co_lock_name;
+ end release_lock;
end lock_up;
/
@@ -3624,8 +3624,8 @@ Example (good)
,lockhandle => l_lock_handle
,expiration_secs => constants_up.co_one_week
);
- if sys.dbms_lock.request(
- lockhandle => l_lock_handle
+ if sys.dbms_lock.request(
+ lockhandle => l_lock_handle
,lockmode => sys.dbms_lock.x_mode
,timeout => sys.dbms_lock.maxwait
,release_on_commit => co_release_on_commit
@@ -3639,8 +3639,8 @@ Example (good)
procedure release_lock(in_lock_handle in varchar2) is
co_lock_type constant type_up.lock_handle := in_lock_handle;
begin
- if sys.dbms_lock.release(lockhandle => co_lock_type) > 0 then
- raise err.e_lock_request_failed;
+ if sys.dbms_lock.release(lockhandle => co_lock_type) > 0 then
+ raise err.e_lock_request_failed;
end if;
end release_lock;
end lock_up;
diff --git a/main/4-language-usage/8-patterns/5-use-dbms-application-info-package-to-follow-progress-of-a-process/g-8510/index.html b/main/4-language-usage/8-patterns/5-use-dbms-application-info-package-to-follow-progress-of-a-process/g-8510/index.html
index affd7761..63614594 100644
--- a/main/4-language-usage/8-patterns/5-use-dbms-application-info-package-to-follow-progress-of-a-process/g-8510/index.html
+++ b/main/4-language-usage/8-patterns/5-use-dbms-application-info-package-to-follow-progress-of-a-process/g-8510/index.html
@@ -3496,8 +3496,8 @@ Example (bad)
)
loop
-- some processing
- sys.dbms_output.put_line(emp_rec.employee_id);
- end loop employees;
+ sys.dbms_output.put_line(emp_rec.employee_id);
+ end loop employees;
end process_emps;
end employee_api;
/
@@ -3541,8 +3541,8 @@ Example (good)
)
loop
-- some processing
- sys.dbms_application_info.set_action(co_label || emp_rec.employee_id);
- end loop employees;
+ sys.dbms_application_info.set_action(co_label || emp_rec.employee_id);
+ end loop employees;
end process_emps;
end employee_api;
/
diff --git a/main/4-language-usage/9-function-usage/g-9010/index.html b/main/4-language-usage/9-function-usage/g-9010/index.html
index 75af4070..611eb985 100644
--- a/main/4-language-usage/9-function-usage/g-9010/index.html
+++ b/main/4-language-usage/9-function-usage/g-9010/index.html
@@ -3487,8 +3487,8 @@ Example (bad)
co_dob_str constant type_up.date_string := in_dob_str;
begin
update employees
- set date_of_birth = to_date(co_dob_str default null on conversion error)
- where employee_id = co_employee_id;
+ set date_of_birth = to_date(co_dob_str default null on conversion error)
+ where employee_id = co_employee_id;
end set_dob;
end employee_api;
/
@@ -3521,8 +3521,8 @@ Example (good)
update employees
set date_of_birth = to_date(
co_dob_str default null on conversion error
- ,'FXYYYY-MM-DD'
- )
+ ,'FXYYYY-MM-DD'
+ )
where employee_id = co_employee_id;
end set_dob;
end employee_api;
diff --git a/main/4-language-usage/9-function-usage/g-9020/index.html b/main/4-language-usage/9-function-usage/g-9020/index.html
index 52a93429..2713fc55 100644
--- a/main/4-language-usage/9-function-usage/g-9020/index.html
+++ b/main/4-language-usage/9-function-usage/g-9020/index.html
@@ -3487,8 +3487,8 @@ Example (bad)
co_salary constant type_up.date_string := in_salary;
begin
update employees
- set salary = to_number(co_salary default null on conversion error)
- where employee_id = co_employee_id;
+ set salary = to_number(co_salary default null on conversion error)
+ where employee_id = co_employee_id;
end set_dob;
end employee_api;
/
@@ -3521,9 +3521,9 @@ Example (good)
update employees
set salary = to_number(
co_salary default null on conversion error
- ,'99999999999999999999.99999'
- ,q'[nls_numeric_characters='.,']'
- )
+ ,'99999999999999999999.99999'
+ ,q'[nls_numeric_characters='.,']'
+ )
where employee_id = co_employee_id;
end set_dob;
end employee_api;
diff --git a/main/4-language-usage/9-function-usage/g-9030/index.html b/main/4-language-usage/9-function-usage/g-9030/index.html
index 23341185..cacbf94e 100644
--- a/main/4-language-usage/9-function-usage/g-9030/index.html
+++ b/main/4-language-usage/9-function-usage/g-9030/index.html
@@ -3502,8 +3502,8 @@ Example (bad)
co_dob_str constant type_up.date_string := in_dob_str;
begin
update employees
- set date_of_birth = to_date(co_dob_str,'FXYYYY-MM-DD') -- violates also G-1050
- where employee_id = co_employee_id;
+ set date_of_birth = to_date(co_dob_str,'FXYYYY-MM-DD') -- violates also G-1050
+ where employee_id = co_employee_id;
end set_dob;
end employee_api;
/
@@ -3535,8 +3535,8 @@ Example (good)
begin
update employees
set date_of_birth = to_date(
- co_dob_str default null on conversion error
- ,'FXYYYY-MM-DD' -- NOSONAR: G-1050 must be a literal
+ co_dob_str default null on conversion error
+ ,'FXYYYY-MM-DD' -- NOSONAR: G-1050 must be a literal
)
where employee_id = co_employee_id;
end set_dob;
diff --git a/main/4-language-usage/9-function-usage/g-9040/index.html b/main/4-language-usage/9-function-usage/g-9040/index.html
index 9fa99e6d..0862cbf9 100644
--- a/main/4-language-usage/9-function-usage/g-9040/index.html
+++ b/main/4-language-usage/9-function-usage/g-9040/index.html
@@ -3493,8 +3493,8 @@ Example (bad)
update employees
set date_of_birth = to_date(
co_dob_str default null on conversion error
- ,'YYYY-MM-DD'
- )
+ ,'YYYY-MM-DD'
+ )
where employee_id = co_employee_id;
end set_dob;
end employee_api;
@@ -3528,8 +3528,8 @@ Example (good)
update employees
set date_of_birth = to_date(
co_dob_str default null on conversion error
- ,'FXYYYY-MM-DD'
- )
+ ,'FXYYYY-MM-DD'
+ )
where employee_id = co_employee_id;
end set_dob;
end employee_api;
diff --git a/main/9-appendix/PLSQL-and-SQL-Coding-Guidelines.pdf b/main/9-appendix/PLSQL-and-SQL-Coding-Guidelines.pdf
index a20402433dec9f19d2009ceddd227ffa1ec8ac7a..89ef02bd876516096542b3644c6c225849d5b3fe 100644
GIT binary patch
delta 1040398
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