Resource Requiring Cleanup
CREATE OR REPLACE PACKAGE serial_package AUTHID DEFINER
AS
CURSOR emps_cur
IS
SELECT *
FROM employees;
END serial_package;
Errors: PACKAGE SERIAL_PACKAGE Line/Col: 5/7 PL/SQL: SQL Statement ignored Line/Col: 6/14 PL/SQL: ORA-00942: table or view does not existMore Details: https://docs.oracle.com/error-help/db/ora-24344
Use Cleanup Subprogram Where Needed
CREATE OR REPLACE PROCEDURE use_packaged_cursor AUTHID DEFINER
IS
PROCEDURE cleanup
IS
BEGIN
/* If called from exception section log the error */
IF SQLCODE <> 0
THEN
/* Consider using open source Logger utility:
https://github.com/OraOpenSource/Logger
logger.log_error ('use_packaged_cursor');
*/
DBMS_OUTPUT.PUT_LINE ('Error!');
END IF;
IF serial_package.emps_cur%ISOPEN
THEN
CLOSE serial_package.emps_cur;
END IF;
END cleanup;
BEGIN
OPEN serial_package.emps_cur;
cleanup;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
/* Clean up but do not re-raise (just to show that you might want
different behaviors for different exceptions). */
cleanup;
WHEN OTHERS
THEN
cleanup;
RAISE;
END;
Errors: PROCEDURE USE_PACKAGED_CURSOR Line/Col: 16/7 PL/SQL: Statement ignored Line/Col: 16/10 PLS-00905: object SQL_ZMXEDLYQPZKPQGLNZCWHRGSTM.SERIAL_PACKAGE is invalid Line/Col: 22/4 PL/SQL: SQL Statement ignored Line/Col: 22/9 PLS-00905: object SQL_ZMXEDLYQPZKPQGLNZCWHRGSTM.SERIAL_PACKAGE is invalidMore Details: https://docs.oracle.com/error-help/db/ora-24344
BEGIN
use_packaged_cursor;
END;
ORA-06550: line 2, column 4: PLS-00905: object SQL_ZMXEDLYQPZKPQGLNZCWHRGSTM.USE_PACKAGED_CURSOR is invalidMore Details: https://docs.oracle.com/error-help/db/ora-06550
BEGIN
use_packaged_cursor;
END;
ORA-06550: line 2, column 4: PLS-00905: object SQL_ZMXEDLYQPZKPQGLNZCWHRGSTM.USE_PACKAGED_CURSOR is invalidMore Details: https://docs.oracle.com/error-help/db/ora-06550