Home
String literals should not be duplicated
Rule description
- String literals should not be duplicated
Non-compliant Code Example
DECLARE NO_DATA_FOUND EXCEPTION; BEGIN FOR i IN 1 .. CUSTOMER_TABLE.COUNT LOOP IF CUSTOMER_TABLE(i) IS NOT NULL THEN DBMS_OUTPUT.PUT( i || ' = (' || CUSTOMER_TABLE(i).Name || ', ' || CUSTOMER_TABLE(i).PhoneNumber || ')' ); END IF; END LOOP; EXCEPTION WHEN NO_DATA_FOUND THEN Log_Errors ( 'No data found'); WHEN ERRORS THEN Log_Errors ( 'Error Log...' || Chr(10) || DBMS_UTILITY.FORMAT_ERROR_STACK() ); Log_Errors ( 'Error Log...' || Chr(10) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() ); --Non compliant code (String literals are duplicated) DBMS_OUTPUT.PUT_LINE ( '----------' ); RAISE; END CUSTOMER_TABLE_ITERATION;
Compliant Code Example
DECLARE NO_DATA_FOUND EXCEPTION; ERROR_MESSAGE VARCHAR2(20):='Error Log...'; --Compliant code (Added variable with string literals) BEGIN FOR i IN 1 .. CUSTOMER_TABLE.COUNT LOOP IF CUSTOMER_TABLE(i) IS NOT NULL THEN DBMS_OUTPUT.PUT( i || ' = (' || CUSTOMER_TABLE(i).Name || ', ' || CUSTOMER_TABLE(i).PhoneNumber || ')' ); END IF; END LOOP; EXCEPTION WHEN NO_DATA_FOUND THEN Log_Errors ( 'No data found'); WHEN ERRORS THEN Log_Errors ( ERROR_MESSAGE || Chr(10) || DBMS_UTILITY.FORMAT_ERROR_STACK() ); Log_Errors ( ERROR_MESSAGE || Chr(10) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() ); --compliant code (Added string literals variable and used at all locations) DBMS_OUTPUT.PUT_LINE ( '----------' ); RAISE; END CUSTOMER_TABLE_ITERATION;