Yes, another post on PL/Scope, that awesome code analysis feature of PL/SQL (first added in 11., and then given a major upgrade in 12.2 with the analysis of SQL statements in PL/SQL code)!
A question on StackOverflow included this comment:
Find all commits:
Find all rollbacks:
Reminder: these data dictionary views are populated only when your session or program unit has these settings enabled:
A question on StackOverflow included this comment:
But there can be scenarios where it is difficult to identify where the ROLLBACK statement are executed in a complex PL SQL program (if you have to do only a modification to the existing code).As of 12.2, it is super-duper easy to find all commits and rollbacks in your code.
Find all commits:
SELECT st.object_name,
st.object_type,
st.line,
src.text
FROM all_statements st, all_source src
WHERE st.TYPE = 'COMMIT'
AND st.object_name = src.name
AND st.owner = src.owner
AND st.line = src.line
ORDER BY st.object_name,
st.object_type
/
Find all rollbacks:
SELECT st.object_name,
st.object_type,
st.line,
src.text
FROM all_statements st, all_source src
WHERE st.TYPE = 'ROLLBACK'
AND st.object_name = src.name
AND st.owner = src.owner
AND st.line = src.line
ORDER BY st.object_name,
st.object_type
/
Reminder: these data dictionary views are populated only when your session or program unit has these settings enabled:
ALTER SESSION SET plscope_settings='identifiers:all, statements:all'
Nice article Steven
ReplyDeleteHi Steve,
ReplyDeleteis there a difference when I execute the query as simple SQL or inside a PL/SQL procedure?
In the latter case it returns no rows for an object belonging to another schema for which I have been granted DEBUG and EXECUTE priveleges.
Do I need some extra privileges in that case?
It puzzles me...
Thank you
Flavio
The code in those other schemas must be compiled with PL/Scope enabled, otherwise there will be no data for them. Other than that, execute should do it.
DeleteThank you, I'll check it out tomorrow.
DeleteFlavio
nice post
ReplyDelete