Oracle Apex: User Einstellungen eines Reports löschen

2014-06-01 von admin

Aufgrund eines Implementierungsfehlers in einer selbst geschriebenen Apex Anwendung hat ein Report unter einem bestimmten User nicht mehr wie gewünscht funktioniert. Mit dieser Prozedur werden alle Einstellungen eines Reports für alle aktuell angemeldeten Benutzer gelöscht und das Problem ist gelöst:

CREATE OR REPLACE PROCEDURE reset_report_curr_user_options( p_app_id IN number, 
															p_page_id IN number, 
															p_region_id IN number) 
IS
	l_sort_pref	VARCHAR2 (200);
BEGIN

	l_sort_pref := 'FSP' || p_app_id || '_P' || p_page_id || '_R' || p_region_id || '_SORT';

	for x IN (select distinct USER_NAME from apex_workspace_sessions) loop
		HTMLDB_UTIL.remove_preference (l_sort_pref, x.USER_NAME);
	end loop;

END;
/

Anhand eines Beispiels soll der Vorgang verdeutlicht werden. Bei der Spalte „CUST_FIRST_NAME“ ist die Einstellung Sortieren durch den Anwender gesetzt worden.

Report_with_sort

Mit der Ausführung der Prozedur

reset_report_curr_user_options(65775, 50, 47467819431230753912);

wird diese und alle anderen Einstellungen durch den User gelöscht.

statement_processed

Wenn die Seite mit dem Bericht im Browser aktualisiert wird, dann ist die „fehlende“ Einstellung zu erkennen.

Report_without_sort

Kategorie: Programmierung Schlagwörter: , , , ,

Oracle Datenbank Schema – killall Script

2011-03-15 von admin

Hier mal ein kleines Script für Oracle Datenbanken, mit welchem ein gesamtes Schema „gelöscht“ werden kann.

--
-- killall
--
begin

	-- delete all tables
	for rec_t in (select table_name from sys.USER_TABLES)
	loop
		execute immediate 'DROP table ' || rec_t.table_name ||  ' cascade constraints purge';
	end loop;

	-- delete all sequences
	for rec_s in (select sequence_name from sys.USER_SEQUENCES)
	loop
		execute immediate 'DROP sequence ' || rec_s.sequence_name;
	end loop;

	-- delete all index
	for rec_i in (select index_name from sys.USER_INDEXES)
	loop
		execute immediate 'DROP index ' || rec_i.index_name;
	end loop;

	commit;		

end;

Danke an: C.R. der mich auf die Idee gebracht hat. :)

Kategorie: Programmierung Schlagwörter: , , , ,