SET SERVEROUTPUT ON
DECLARE
l_run NUMBER;
BEGIN
l_run := DBMS_PLSQL_CODE_COVERAGE.start_coverage(run_comment => 'Example 1');
DBMS_OUTPUT.put_line('l_run=' || l_run);
-- Run our tests.
run_func1_test('Test 1', 'ABC', 'abc');
DBMS_PLSQL_CODE_COVERAGE.stop_coverage;
END;
/
l_run=54
----------------------------------------
p_test=Test 1 : p_code=ABC : p_return=abc
l_return=abc
Test 1 Result=Passed
PL/SQL procedure successfully completed.
SQL>
COLUMN run_comment FORMAT A30
SELECT run_id,
run_comment
FROM dbmspcc_runs
WHERE run_comment = 'Example 1';
RUN_ID RUN_COMMENT
---------- ------------------------------
54 Example 1
SQL>
COLUMN owner FORMAT A20
COLUMN name FORMAT A20
COLUMN type FORMAT A20
SELECT object_id,
owner,
name,
type
FROM dbmspcc_units
WHERE run_id = 54
ORDER BY 1;
OBJECT_ID OWNER NAME TYPE
---------- -------------------- -------------------- --------------------
79206 TEST FUNC1 FUNCTION
79220 TEST RUN_FUNC1_TEST PROCEDURE
SQL>
SELECT block,
line,
col,
covered,
not_feasible
FROM dbmspcc_blocks
WHERE run_id = 54
AND object_id = 79206
ORDER BY 2;
BLOCK LINE COL COVERED NOT_FEASIBLE
---------- ---------- ---------- ---------- ------------
1 1 1 1 0
2 7 5 0 0
4 9 9 0 0
3 9 9 1 0
6 9 9 1 0
7 9 9 0 0
5 10 5 0 0
10 12 58 0 0
8 12 9 1 0
11 13 5 0 0
9 18 3 1 0
11 rows selected.
SQL>
SET LINESIZE 1000 PAGESIZE 100
COLUMN col FORMAT A10
COLUMN covered FORMAT A10
COLUMN line FORMAT 99999
COLUMN text FORMAT A110
SELECT LISTAGG(ccb.col, ',') WITHIN GROUP (ORDER BY ccb.col) AS col,
LISTAGG(ccb.covered, ',') WITHIN GROUP (ORDER BY ccb.col) AS covered,
s.line,
s.text
FROM user_source s
JOIN dbmspcc_units ccu ON s.name = ccu.name AND s.type = ccu.type
LEFT OUTER JOIN dbmspcc_blocks ccb ON ccu.run_id = ccb.run_id AND ccu.object_id = ccb.object_id AND s.line = ccb.line
WHERE s.name = 'FUNC1'
AND s.type = 'FUNCTION'
AND ccu.run_id = 54
GROUP BY s.line, s.text
ORDER BY 3;
COL COVERED LINE TEXT
---------- ---------- ------ --------------------------------------------------------------------------------------------------------------
1 1 1 FUNCTION func1 (p_code IN VARCHAR2)
2 RETURN VARCHAR2
3 AS
4 BEGIN
5 -- Validate input.
6 IF p_code IS NULL THEN
5 0 7 DBMS_OUTPUT.put_line('Parameter P_CODE cannot be NULL.');
8 RETURN 'Error';
9,9,9,9 0,0,1,1 9 ELSIF LENGTH(p_code) NOT BETWEEN 3 and 5 THEN
5 0 10 DBMS_OUTPUT.put_line('Parameter P_CODE must be between 3-5 characters inclusive.');
11 RETURN 'Error';
9,58 1,0 12 ELSIF TO_NUMBER(p_code DEFAULT -1 ON CONVERSION ERROR) != -1 THEN
5 0 13 DBMS_OUTPUT.put_line('Parameter P_CODE must contain at least 1 non-numeric character.');
14 RETURN 'Error';
15 END IF;
16
17 -- The parameter is good, so do something.
3 1 18 RETURN LOWER(p_code);
19 END;
19 rows selected.
SQL>