Use case - Packages/Types app
Introduction
The comparison has been done between PL-SQL Analyzer 8.3.16 and SQL Analyzer 3.4.0-beta3 (AIP 8.3.16 + datacolumnaccess 1.0.0-beta2), on a representative sample focused on Oracle PL-SQL Packages and Types. Source code is confidential, extracted with CAST Database Extractor, without parameters (full Instance), Oracle version is 11.2.0.2.0.
You can find the differences below.
TQI
| Analyzer | TQI |
|---|---|
| SQL | 2.44900109665184 |
| Oracle | 2.69593522967072 |
Number of data functions and transaction entry points per APPLICATION
| Analyzer | cnt_datafunctions | cntdfp_functionpoints | cntdf_calibratedfunctionpoints | cnt_transactions | cnttfp_functionpoints | cntt_calibratedfunctionpoints |
|---|---|---|---|---|---|---|
| SQL | 1796 | 10007 | 10007 | 0 | 0 | 0 |
| Oracle | 1530 | 8533 | 8533 | 0 | 0 | 0 |
Delta compared with Oracle
By object type
| ObjectType | Delta | Explanation |
|---|---|---|
| Column | - 0.003 % (Oracle : 67249 SQL : 67247) | Even if we have less, we have the goods ones. Some Oracle columns, on objects tables are fakes. |
| Foreign Key | - 2.617 % (Oracle : 917 SQL : 893) | We miss details when src files are malformed, e.g.: CONSTRAINT FK_NAME_01 ( %CAST_AST_WithResolutionSymbolReference.resolutionSymbol% ) REFERENCES TABLE_02 ( %CAST_AST_WithResolutionSymbolReference.resolutionSymbol% ) ON DELETE NO ACTION VALIDATE,
|
| Function | + 1.517 % (Oracle : 2791 SQL : 2834) | We detect more functions compared with Oracle |
| Indexes Primary Keys Unique Constraints | - 71.986 % (Oracle : 3741 SQL : 1048) | We miss indexes on SQL compared with Oracle, when src files are malformed. E.g. : CREATE INDEX %CAST_Symbol_WithParent.parent%.IDX_01 ON %CAST_ANSISQL_Index.indexedObject% ( COL1, COL2) or CONSTRAINT PK_NAME PRIMARY KEY ( %CAST_AST_WithResolutionSymbolReference.resolutionSymbol% ) VALIDATE |
| Method | + 100 % (Oracle : 0 SQL : 745) | Exists only on SQL Analyzer |
| Package | 100 % (Oracle : 698 SQL : 698) |
|
| Procedure | - 9.297 % (Oracle : 3668 SQL : 3327) | We miss some procedures, this is a bug that should be fixed |
| Schema | - 33.333 % (Oracle : 21 SQL : 14) | We miss empty schema (with no objects) referenced only in uaxDirectory file, with no impact on function points or TQI |
| Synonym | 100 % (Oracle : 3764 SQL : 3764) | |
| Table | 100 % (Oracle : 1982 SQL : 1982) | |
| Trigger | 100 % (Oracle : 7 SQL : 7) | |
| Type | - 2.516 % (Oracle : 914 SQL : 891) | We miss 23 Type on SQL compared with Oracle, when src files are malformed, e.g. : src file contain only CREATE OR REPLACE and nothing else. We also miss some TYPE creates as tables of NUMBER, and should investigated why we miss them. |
| View | 100 % (Oracle : 4073 SQL : 4073) | |
| Check Constraint | - 100 % (Oracle : 5138 SQL : 0) | The object is missing on SQL Analyzer, with no impact on function points or TQI |
| Database Link | - 100 % (Oracle : 2 SQL : 0) | The object is missing on SQL Analyzer, gm with no impact on function points or TQI |
| Instance | - 100 % (Oracle : 1 SQL : 0) | The object is missing on SQL Analyzer, with no impact on function points or TQI |
| Sequence | - 100 % (Oracle : 260 SQL : 0) |
The object is missing on SQL Analyzer, with no impact on function points or TQI |
By link type
| KindOfLink | CallerType | CalleeType | Delta | Explanation |
|---|---|---|---|---|
| ACCESS | Function | Column | + 0.620 % (Oracle : 12973 SQL : 13054) | We detect more links compared with Oracle |
| ACCESS | Package | Column | - 100 % (Oracle : 169 SQL : 0) | We miss columns on SQL for table accessed directly in packages. Should be fixed. |
| ACCESS | Procedure | Column | + 5.005 % (Oracle : 17329 SQL : 18242) | We detect more links compared with Oracle |
| ACCESS | View | Column | - 18.093 % (Oracle : 59995 SQL : 49140) | Bug related to synonym on views that should be fixed |
| ACCESS | View | Type | - 100 % (Oracle : 2 SQL : 0) | PL/SQL add 2 false links when selected columns have the same name as an object type. |
| CALL | Function | Function | + 42.246 % (Oracle : 689 SQL : 1193) | We detect more links compared with Oracle |
| CALL | Function | Procedure | - 37.678 % (Oracle : 913 SQL : 569) | Should be fixed. |
| CALL | Method | Function | + 100 % (Oracle : 0 SQL : 1) | |
| CALL | Method | Method | + 100 % (Oracle : 0 SQL : 14) | |
| CALL | Method | Procedure | + 100 % (Oracle : 0 SQL : 7) | |
| CALL | Method | Type | + 100 % (Oracle : 0 SQL : 7) | |
| CALL | Package | Procedure | - 100 % (Oracle : 2 SQL : 0) | We miss columns on SQL for procedures accessed directly in a PL/SQL block. Should be fixed. |
| CALL | Procedure | Function | + 0.644 % (Oracle : 617 SQL : 621) | We detect more links compared with Oracle |
| CALL | Procedure | Procedure | - 14.702 % (Oracle : 1510 SQL : 1288) | Should be fixed. |
| CALL | Trigger | Function | - 100 % (Oracle : 9 SQL : 0) | The case of DDL Trrigers. Should be fixed. |
| CALL | Trigger | Procedure | - 75.000 % (Oracle : 4 SQL : 1) | We miss Function / Procedures, and that's why we also miss links. Should be fixed. |
| CALL | View | Function | - 15.000 % (Oracle : 320 SQL : 272) | We miss Function / Procedures, and that's why we also miss links. Should be fixed. |
| CALL | View | Method | + 100 % (Oracle : 0 SQL : 7) | |
| USE | Function | Synonym | + 100 % (Oracle : 0 SQL : 55) | |
| USE | Function | Table | + 18.068 % (Oracle : 3410 SQL : 4162) | We detect more links compared with Oracle |
| USE | Function | View | + 12.957 % (Oracle : 262 SQL : 301) | We detect more links compared with Oracle |
| USE | Method | Table | + 100 % (Oracle : 0 SQL : 1) | |
| USE | Procedure | Synonym | + 100 % (Oracle : 0 SQL : 198) | |
| USE | Procedure | Table | + 3.136 % (Oracle : 4201 SQL : 4337) | We detect more links compared with Oracle |
| USE | Procedure | View | - 23.629 % (Oracle : 237 SQL : 181) | We miss homonymous package which has as effect, we miss function / procedures from missed packages and that's why we miss links. Should be fixed. |
| USE | Trigger | Table | 100 % (Oracle : 1 SQL : 1) |
|
| USE | Table | Type | + 100 % (Oracle : 0 SQL : 23) | |
| USE | Type | Type | + 100 % (Oracle : 0 SQL : 48) | |
| USE | View | Synonym | + 100 % (Oracle : 0 SQL : 6) | |
| USE | View | Table | + 0.908 % (Oracle : 7638 SQL : 7708) | We detect more links compared with Oracle |
| USE | View | View | + 9.064 % (Oracle : 3371 SQL : 3707) | We detect more links compared with Oracle |
By equivalent quality rule
Missed functions/procedures/tables have an impact on quality rules.
| Quality Rule Name | Object Type | Number of violations detected by SQL | Number of violations detected by Oracle |
|---|---|---|---|
| Always define column names when inserting values | Function | 24 | 0 |
| Always define column names when inserting values | Procedure | 73 | 0 |
| Average Coupling Artifacts | Function | 26 | 5 |
| Average Coupling Artifacts | Procedure | 21 | 10 |
| Average Coupling Artifacts | View | 26 | 28 |
| Average Reuse by Call | Function | 2764 | 1449 |
| Average Reuse by Call | Method | 745 | 0 |
| Average Reuse by Call | Procedure | 3308 | 1124 |
| Average Reuse by Call | Trigger | 7 | 7 |
| Average Reuse by Call | View | 3881 | 3888 |
| Average Size Artifacts | Function | 27 | 400 |
| Average Size Artifacts | Procedure | 11 | 326 |
| Average Size Artifacts | View | 2 | 530 |
| Avoid SELECT *" queries" | Function | 55 | 163 |
| Avoid SELECT *" queries" | Procedure | 40 | 73 |
| Avoid SELECT *" queries" | View | 47 | 239 |
| Avoid Artifacts with High Cyclomatic Complexity | Function | 128 | 111 |
| Avoid Artifacts with High Cyclomatic Complexity | Procedure | 69 | 81 |
| Avoid Artifacts with High Cyclomatic Complexity | View | 14 | 0 |
| Avoid Artifacts with High Depth of Code | Function | 11 | 35 |
| Avoid Artifacts with High Depth of Code | Procedure | 7 | 30 |
| Avoid Artifacts with High Depth of Nested Subqueries | Function | 95 | 10 |
| Avoid Artifacts with High Depth of Nested Subqueries | Procedure | 78 | 4 |
| Avoid Artifacts with High Depth of Nested Subqueries | View | 72 | 6 |
| Avoid Artifacts with High Essential Complexity | Function | 747 | 128 |
| Avoid Artifacts with High Essential Complexity | Method | 1 | 0 |
| Avoid Artifacts with High Essential Complexity | Procedure | 353 | 82 |
| Avoid Artifacts with High Essential Complexity | Trigger | 1 | 0 |
| Avoid Artifacts with High Essential Complexity | View | 137 | 0 |
| Avoid Artifacts with High Fan-In | Function | 64 | 38 |
| Avoid Artifacts with High Fan-In | Procedure | 55 | 50 |
| Avoid Artifacts with High Fan-In | View | 92 | 88 |
| Avoid Artifacts with High Fan-Out | Function | 70 | 65 |
| Avoid Artifacts with High Fan-Out | Method | 1 | 0 |
| Avoid Artifacts with High Fan-Out | Procedure | 65 | 95 |
| Avoid Artifacts with High Fan-Out | View | 42 | 23 |
| Avoid Artifacts with High Integration Complexity | Function | 132 | 62 |
| Avoid Artifacts with High Integration Complexity | Procedure | 69 | 51 |
| Avoid Artifacts with High Integration Complexity | View | 14 | 0 |
| Avoid Artifacts with High RAW SQL Complexity | Function | 64 | 145 |
| Avoid Artifacts with High RAW SQL Complexity | Procedure | 5 | 92 |
| Avoid Artifacts with High RAW SQL Complexity | View | 0 | 41 |
| Avoid Artifacts with SQL statement including subqueries | Function | 457 | 506 |
| Avoid Artifacts with SQL statement including subqueries | Procedure | 391 | 493 |
| Avoid Artifacts with SQL statement including subqueries | View | 734 | 890 |
| Avoid Artifacts with a Complex SELECT Clause | Function | 0 | 383 |
| Avoid Artifacts with a Complex SELECT Clause | Procedure | 0 | 178 |
| Avoid Artifacts with high Commented-out Code Lines/Code Lines ratio | Function | 307 | 253 |
| Avoid Artifacts with high Commented-out Code Lines/Code Lines ratio | Method | 4 | 0 |
| Avoid Artifacts with high Commented-out Code Lines/Code Lines ratio | Procedure | 262 | 174 |
| Avoid Artifacts with high Commented-out Code Lines/Code Lines ratio | View | 82 | 81 |
| Avoid Artifacts with lines longer than X characters | Function | 291 | 333 |
| Avoid Artifacts with lines longer than X characters | Procedure | 268 | 273 |
| Avoid Artifacts with lines longer than X characters | Trigger | 1 | 1 |
| Avoid Artifacts with lines longer than X characters | View | 1070 | 1066 |
| Avoid Artifacts with queries on too many Tables and/or Views | Function | 223 | 279 |
| Avoid Artifacts with queries on too many Tables and/or Views | Procedure | 206 | 219 |
| Avoid Artifacts with queries on too many Tables and/or Views | View | 797 | 0 |
| Avoid Artifacts with too many parameters | Function | 141 | 104 |
| Avoid Artifacts with too many parameters | Procedure | 137 | 47 |
| Avoid Cursors inside a loop | Procedure | 2 | 6 |
| Avoid Rule HINT /*+ rule */ or –+ rule in PL/SQL code | View | 0 | 2 |
| Avoid SQL queries with implicit conversions in the WHERE clause | Function | 0 | 224 |
| Avoid SQL queries with implicit conversions in the WHERE clause | Procedure | 0 | 214 |
| Avoid SQL queries with implicit conversions in the WHERE clause | View | 0 | 39 |
| Avoid Tables not using referential integrity | Table | 1507 | 1478 |
| Avoid Tables not using referential integrity | Type | 0 | 29 |
| Avoid Tables with more than 20 columns on an OLTP system | Table | 202 | 191 |
| Avoid Tables with more than 20 columns on an OLTP system | Type | 0 | 12 |
| Avoid Tables without Primary Key | Table | 1013 | 984 |
| Avoid Tables without Primary Key | Type | 0 | 8 |
| Avoid Too Many Copy Pasted Artifacts | Function | 526 | 747 |
| Avoid Too Many Copy Pasted Artifacts | Method | 30 | 0 |
| Avoid Too Many Copy Pasted Artifacts | Procedure | 440 | 563 |
| Avoid Too Many Copy Pasted Artifacts | View | 1957 | 1963 |
| Avoid artifacts having recursive calls | Function | 22 | 1 |
| Avoid artifacts having recursive calls | Procedure | 21 | 3 |
| Avoid cascading Triggers | Trigger | 1 | 0 |
| Avoid empty catch blocks | Procedure | 6 | 0 |
| Avoid empty catch blocks | SQL Analyzer Project | 1 | 0 |
| Avoid empty catch blocks | Universal Project | 1 | 0 |
| Avoid exists and not exists independent clauses | Function | 8 | 0 |
| Avoid exists and not exists independent clauses | Procedure | 6 | 0 |
| Avoid exists and not exists independent clauses | View | 419 | 0 |
| Avoid explicit comparison with NULL | View | 1 | 0 |
| Avoid having multiple artifacts deleting data on the same SQL table | Table | 905 | 785 |
| Avoid having multiple artifacts deleting data on the same SQL table | Type | 0 | 30 |
| Avoid having multiple artifacts inserting data on the same SQL Table | Table | 4110 | 3700 |
| Avoid having multiple artifacts inserting data on the same SQL Table | Type | 0 | 68 |
| Avoid having multiple artifacts updating data on the same SQL Table | Table | 1732 | 2302 |
| Avoid having multiple artifacts updating data on the same SQL Table | Type | 0 | 98 |
| Avoid large Artifacts - too many Lines of Code | Function | 582 | 561 |
| Avoid large Artifacts - too many Lines of Code | Method | 13 | 0 |
| Avoid large Artifacts - too many Lines of Code | Procedure | 517 | 500 |
| Avoid large Artifacts - too many Lines of Code | View | 548 | 549 |
| Avoid large Tables - too many columns | Table | 42 | 36 |
| Avoid large Tables - too many columns | Type | 0 | 6 |
| Avoid long Table or View names | Table | 1440 | 1417 |
| Avoid long Table or View names | Type | 0 | 23 |
| Avoid long Table or View names | View | 3107 | 3107 |
| Avoid non-SARGable queries | Function | 70 | 0 |
| Avoid non-SARGable queries | Procedure | 111 | 0 |
| Avoid non-SARGable queries | View | 222 | 0 |
| Avoid non-indexed SQL queries | Function | 676 | 404 |
| Avoid non-indexed SQL queries | Procedure | 618 | 450 |
| Avoid non-indexed SQL queries | View | 1876 | 1199 |
| Avoid orphaned synonyms | Synonym | 566 | 62 |
| Avoid queries using old style join convention instead of ANSI-Standard joins | Function | 361 | 348 |
| Avoid queries using old style join convention instead of ANSI-Standard joins | Procedure | 450 | 438 |
| Avoid queries using old style join convention instead of ANSI-Standard joins | View | 2044 | 2001 |
| Avoid redundant indexes | Table | 0 | 79 |
| Avoid synonym with both private and public definition | Synonym | 5 | 5 |
| Avoid too many Indexes on one Table | Table | 0 | 15 |
| Avoid too many Indexes on one Table | Type | 0 | 14 |
| Avoid triggers, functions and procedures with a very low comment/code ratio | Function | 1060 | 545 |
| Avoid triggers, functions and procedures with a very low comment/code ratio | Procedure | 957 | 341 |
| Avoid triggers, functions and procedures with a very low comment/code ratio | Trigger | 6 | 6 |
| Avoid undocumented Triggers, Functions and Procedures | Function | 965 | 458 |
| Avoid undocumented Triggers, Functions and Procedures | Procedure | 863 | 276 |
| Avoid undocumented Triggers, Functions and Procedures | Trigger | 6 | 6 |
| Avoid unreferenced Functions | Function | 2025 | 2172 |
| Avoid unreferenced Functions | Procedure | 2739 | 3538 |
| Avoid unreferenced Tables | Table | 533 | 540 |
| Avoid unreferenced Tables | Type | 0 | 6 |
| Avoid unreferenced views | View | 739 | 822 |
| Avoid using nullable" Columns except in the last position in a Table" | Table | 0 | 1850 |
| Avoid using GOTO statement | Function | 8 | 8 |
| Avoid using SQL queries inside a loop | Function | 79 | 59 |
| Avoid using SQL queries inside a loop | Procedure | 158 | 216 |
| Avoid using dynamic SQL in SQL Artifacts | Function | 236 | 105 |
| Avoid using dynamic SQL in SQL Artifacts | Procedure | 115 | 92 |
| Avoid using dynamic SQL in SQL Artifacts | Trigger | 0 | 2 |
| Avoid using the GROUP BY clause | Function | 71 | 134 |
| Avoid using the GROUP BY clause | Procedure | 161 | 166 |
| Avoid using the GROUP BY clause | View | 115 | 0 |
| Column references should be qualified | Function | 8 | 0 |
| Column references should be qualified | Procedure | 53 | 0 |
| Column references should be qualified | View | 227 | 0 |
| Cyclomatic Complexity Distribution | Function | 1480 | 922 |
| Cyclomatic Complexity Distribution | Method | 743 | 0 |
| Cyclomatic Complexity Distribution | Procedure | 2923 | 692 |
| Cyclomatic Complexity Distribution | Trigger | 6 | 6 |
| Cyclomatic Complexity Distribution | View | 3912 | 0 |
| DISTINCT should not be used in SQL SELECT statements | Function | 208 | 0 |
| DISTINCT should not be used in SQL SELECT statements | Procedure | 190 | 0 |
| DISTINCT should not be used in SQL SELECT statements | View | 84 | 0 |
| Do not mix ANSI and non-ANSI JOIN syntax in the same query | Function | 22 | 24 |
| Do not mix ANSI and non-ANSI JOIN syntax in the same query | Procedure | 10 | 17 |
| Do not mix ANSI and non-ANSI JOIN syntax in the same query | View | 23 | 25 |
| Errors should be handled in stored procedures and functions | Function | 221 | 0 |
| Errors should be handled in stored procedures and functions | Procedure | 268 | 0 |
| High Complexity Artifacts | Function | 72 | 68 |
| High Complexity Artifacts | Procedure | 26 | 44 |
| High Complexity Artifacts | View | 3 | 0 |
| High Complexity classes | Type | 1 | 0 |
| High Coupling Artifacts | Function | 5 | 3 |
| High Coupling Artifacts | Procedure | 6 | 2 |
| High Coupling Artifacts | View | 10 | 8 |
| High Reuse by Call | Function | 67 | 23 |
| High Reuse by Call | Procedure | 41 | 26 |
| High Reuse by Call | View | 156 | 149 |
| High SQL Complexity Artifacts | Function | 15 | 203 |
| High SQL Complexity Artifacts | Procedure | 0 | 178 |
| High SQL Complexity Artifacts | View | 0 | 107 |
| LIKE operator should not start with a wildcard character | Function | 2 | 0 |
| LIKE operator should not start with a wildcard character | Procedure | 12 | 0 |
| LIKE operator should not start with a wildcard character | View | 11 | 0 |
| LONG and LONG RAW datatypes should no longer be used | Function | 0 | 1 |
| LONG and LONG RAW datatypes should no longer be used | Procedure | 0 | 2 |
| LONG and LONG RAW datatypes should no longer be used | Table | 52 | 52 |
| LONG and LONG RAW datatypes should no longer be used | View | 0 | 221 |
| Large Size Artifacts | Function | 10 | 170 |
| Large Size Artifacts | Procedure | 8 | 184 |
| Large Size Artifacts | View | 0 | 39 |
| Low Complexity Artifacts | Function | 1194 | 347 |
| Low Complexity Artifacts | Method | 2 | 0 |
| Low Complexity Artifacts | Procedure | 294 | 250 |
| Low Complexity Artifacts | Trigger | 1 | 1 |
| Low Complexity Artifacts | View | 130 | 0 |
| Low Coupling Artifacts | Function | 67 | 23 |
| Low Coupling Artifacts | Procedure | 41 | 26 |
| Low Coupling Artifacts | View | 156 | 149 |
| Low OO Complexity Class | Type | 890 | 0 |
| Low SQL Complexity Artifacts | Function | 560 | 375 |
| Low SQL Complexity Artifacts | Procedure | 512 | 384 |
| Low SQL Complexity Artifacts | Trigger | 1 | 0 |
| Low SQL Complexity Artifacts | View | 747 | 653 |
| Moderate Complexity Artifacts | Function | 116 | 89 |
| Moderate Complexity Artifacts | Procedure | 133 | 159 |
| Moderate Complexity Artifacts | View | 28 | 0 |
| Moderate Complexity classes | Type | 890 | 0 |
| Moderate Fan-In classes | Type | 891 | 0 |
| Moderate Fan-Out classes | Type | 891 | 0 |
| Moderate OO Complexity Class | Type | 1 | 0 |
| Moderate SQL Complexity Artifacts | Function | 43 | 99 |
| Moderate SQL Complexity Artifacts | Procedure | 2 | 53 |
| Moderate SQL Complexity Artifacts | View | 0 | 479 |
| Never use SQL queries with a cartesian product | Function | 14 | 19 |
| Never use SQL queries with a cartesian product | Procedure | 72 | 85 |
| Never use SQL queries with a cartesian product | View | 57 | 73 |
| Never use WHEN OTHER THEN NULL | Procedure | 5 | 0 |
| Number of Code Lines | Function | 2862 | 1480 |
| Number of Code Lines | Method | 745 | 0 |
| Number of Code Lines | Procedure | 3376 | 1162 |
| Number of Code Lines | Trigger | 7 | 7 |
| Number of Code Lines | View | 4073 | 4073 |
| Number of Datablocks | Function | 2862 | 1480 |
| Number of Datablocks | Procedure | 3376 | 1162 |
| Number of Files | Type | 891 | 0 |
| Number of Forms | Function | 2862 | 1480 |
| Number of Forms | Method | 745 | 0 |
| Number of Forms | Procedure | 3376 | 1162 |
| Number of Forms | Trigger | 7 | 7 |
| Number of Forms | View | 4073 | 4073 |
| Number of Functions | Table | 1982 | 1953 |
| Number of Functions | Type | 0 | 29 |
| Number of Tables | View | 4073 | 4073 |
| Number of Views | Trigger | 7 | 7 |
| Prefer PRIVATE to PUBLIC synonym | Synonym | 3200 | 3200 |
| Prefer UNION ALL to UNION | Function | 70 | 83 |
| Prefer UNION ALL to UNION | Procedure | 59 | 60 |
| Prefer UNION ALL to UNION | View | 122 | 147 |
| Replace OR conditions testing equality on the same identifier in SQL WHERE clauses by an IN test condition | Function | 10 | 0 |
| Replace OR conditions testing equality on the same identifier in SQL WHERE clauses by an IN test condition | Procedure | 11 | 0 |
| Replace OR conditions testing equality on the same identifier in SQL WHERE clauses by an IN test condition | View | 34 | 0 |
| Reuse by Call Distribution | Function | 5 | 3 |
| Reuse by Call Distribution | Procedure | 6 | 2 |
| Reuse by Call Distribution | View | 6 | 8 |
| SQL Complexity Distribution | Function | 2244 | 803 |
| SQL Complexity Distribution | Method | 745 | 0 |
| SQL Complexity Distribution | Procedure | 2862 | 547 |
| SQL Complexity Distribution | Trigger | 6 | 7 |
| SQL Complexity Distribution | View | 3326 | 2834 |
| Small Size Artifacts | Function | 345 | 466 |
| Small Size Artifacts | Method | 1 | 0 |
| Small Size Artifacts | Procedure | 305 | 356 |
| Small Size Artifacts | Trigger | 0 | 2 |
| Small Size Artifacts | View | 174 | 2830 |
| Specify column names instead of column numbers in ORDER BY clauses | Function | 3 | 0 |
| Specify column names instead of column numbers in ORDER BY clauses | Procedure | 1 | 0 |
| Table naming convention - character set control | SQL Analyzer Project | 1 | 0 |
| Table naming convention - character set control | Table | 1170 | 0 |
| Table naming convention - character set control | Universal Project | 1 | 0 |
| Tables aliases should not end with a numeric suffix | Function | 98 | 0 |
| Tables aliases should not end with a numeric suffix | Procedure | 50 | 0 |
| Tables aliases should not end with a numeric suffix | View | 216 | 0 |
| Tables should be aliased | Function | 2 | 0 |
| Tables should be aliased | Procedure | 1 | 0 |
| Tables should be aliased | View | 42 | 0 |
| Triggers should not directly modify tables, a procedure or function should be used instead | Trigger | 1 | 0 |
| Use MINUS or EXCEPT operator instead of NOT EXISTS and NOT IN subqueries | Function | 64 | 0 |
| Use MINUS or EXCEPT operator instead of NOT EXISTS and NOT IN subqueries | Procedure | 37 | 0 |
| Use MINUS or EXCEPT operator instead of NOT EXISTS and NOT IN subqueries | View | 123 | 0 |
| Use WHEN OTHERS in exception management | Function | 62 | 4 |
| Use WHEN OTHERS in exception management | Procedure | 141 | 2 |
| Use at most one statement per line | Function | 17 | 80 |
| Use at most one statement per line | Procedure | 3 | 126 |
| VARCHAR2 and NVARCHAR2 should be used | Function | 32 | 65 |
| VARCHAR2 and NVARCHAR2 should be used | Package | 27 | 66 |
| VARCHAR2 and NVARCHAR2 should be used | Procedure | 50 | 50 |
| VARCHAR2 and NVARCHAR2 should be used | Table | 94 | 94 |
| Very High Reuse by Call | Function | 26 | 5 |
| Very High Reuse by Call | Procedure | 21 | 10 |
| Very High Reuse by Call | View | 30 | 28 |
| View naming convention - character set control | View | 1620 | 0 |