/**
 *	Drop all Java Items  DO NOT RUN UNMODIFIED
 */
DECLARE
	Cmd			VARCHAR2(255);		--	DROP JAVA command

	CURSOR Cur_Java IS
    	SELECT 	*
		FROM 	User_Objects
		WHERE 	Object_Type LIKE 'JAVA%';

BEGIN
	DBMS_OUTPUT.PUT_LINE('Deleting Java objects:');
	FOR j IN Cur_Java LOOP
		IF (j.Object_Type = 'JAVA RESOURCE') THEN
			CMD := 'DROP JAVA RESOURCE "' || j.Object_Name || '"';
		ELSIF (j.Object_Type = 'JAVA SOURCE') THEN
			CMD := 'DROP JAVA SOURCE "' || j.Object_Name || '"';
		ELSE
			CMD := 'DROP JAVA CLASS "' || j.Object_Name || '"';
		END IF;
	--	DBMS_OUTPUT.PUT(CMD);
		BEGIN
			EXECUTE IMMEDIATE CMD;
	--		DBMS_OUTPUT.PUT_LINE('  ** ok');
			EXCEPTION
				WHEN OTHERS THEN
					DBMS_OUTPUT.PUT_LINE('  ** error **');		
	  	END;
	END LOOP;
	--	Delete remaining entries
--	DELETE JAVA$CLASS$MD5$Table;
	COMMIT;
END;
/
/**
 *
 */
DECLARE
	CURSOR Cur_Invalids IS
		SELECT Object_Name
		FROM USER_Objects
		WHERE Object_Type LIKE 'JAVA%' AND Status <> 'VALID'
		ORDER BY 1;
	ClassName				VARCHAR2(256);
BEGIN
	FOR i IN CUR_Invalids LOOP
		ClassName := DBMS_JAVA.LONGNAME(i.Object_Name);
		DBMS_OUTPUT.PUT_LINE(ClassName);
		DBMS_JAVA.DROPJAVA(ClassName);
	END LOOP;
END;