cursor durch for-schleifen ersetzt
This commit is contained in:
@@ -140,7 +140,7 @@ create or replace package body pck_net_storage as
|
||||
,i_delimiter in varchar2
|
||||
,i_start_with in varchar2
|
||||
,i_limit in number
|
||||
) return sys_refcursor
|
||||
) return t_net_storage_tab
|
||||
/*Kopf------------------------------------------------------------------------------------------------
|
||||
-- Beschreibung: Listet Objekte und Unterordner im Bucket ohne Rechte- oder Scope-Prüfung.
|
||||
-- Paginiert automatisch über nextStartWith bis alle Ergebnisse geladen sind.
|
||||
@@ -151,7 +151,7 @@ create or replace package body pck_net_storage as
|
||||
-- i_start_with Optionaler Startpunkt für Paginierung
|
||||
-- i_limit Maximale Anzahl Ergebnisse (0 = unbegrenzt)
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- Rückgabe: Ref Cursor mit Spalten (object_name, object_size, last_modified, is_folder, etag)
|
||||
-- Rückgabe: Collection t_net_storage_tab mit allen gefundenen Objekten
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- MA Datum Änderung
|
||||
-- SCK 2026-04-08 Funktion erstellt
|
||||
@@ -161,7 +161,6 @@ create or replace package body pck_net_storage as
|
||||
l_response clob;
|
||||
l_result t_net_storage_tab := t_net_storage_tab();
|
||||
l_next_start varchar2(1024);
|
||||
l_cursor sys_refcursor;
|
||||
l_count number := 0;
|
||||
l_done boolean := false;
|
||||
l_cur_start varchar2(1024) := i_start_with;
|
||||
@@ -256,15 +255,7 @@ create or replace package body pck_net_storage as
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
open l_cursor for
|
||||
select t.object_name
|
||||
,t.object_size
|
||||
,t.last_modified
|
||||
,t.is_folder
|
||||
,t.etag
|
||||
from table(l_result) t;
|
||||
|
||||
return l_cursor;
|
||||
return l_result;
|
||||
end f_list_objects_internal;
|
||||
|
||||
-- ==================== Öffentliche Funktionen ====================
|
||||
@@ -274,7 +265,7 @@ create or replace package body pck_net_storage as
|
||||
,i_delimiter in varchar2 default '/'
|
||||
,i_start_with in varchar2 default null
|
||||
,i_limit in number default 0
|
||||
) return sys_refcursor
|
||||
) return t_net_storage_tab
|
||||
/*Kopf------------------------------------------------------------------------------------------------
|
||||
-- Beschreibung: Listet Objekte und Unterordner im Bucket mit Rechteprüfung und Scope-Validierung.
|
||||
------------------------------------------------------------------------------------------------------
|
||||
@@ -283,7 +274,7 @@ create or replace package body pck_net_storage as
|
||||
-- i_start_with Optionaler Startpunkt für Paginierung
|
||||
-- i_limit Maximale Anzahl Ergebnisse (0 = unbegrenzt)
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- Rückgabe: Ref Cursor mit Spalten (object_name, object_size, last_modified, is_folder, etag)
|
||||
-- Rückgabe: Collection t_net_storage_tab mit allen gefundenen Objekten
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- MA Datum Änderung
|
||||
-- SCK 2026-04-08 Funktion erstellt
|
||||
@@ -396,48 +387,31 @@ create or replace package body pck_net_storage as
|
||||
-- SCK 2026-04-08 Prozedur erstellt
|
||||
------------------------------------------------------------------------------------------------Kopf*/
|
||||
is
|
||||
l_cursor sys_refcursor;
|
||||
l_object_name varchar2(1024);
|
||||
l_object_size number;
|
||||
l_last_modified date;
|
||||
l_is_folder varchar2(1);
|
||||
l_etag varchar2(256);
|
||||
l_response clob;
|
||||
l_objects t_net_storage_tab;
|
||||
l_response clob;
|
||||
begin
|
||||
pck_mitarbeiterrecht.p_hat_recht('ADMIN');
|
||||
p_assert_allowed(i_prefix);
|
||||
|
||||
-- Alle Objekte im Prefix auflisten (kein Delimiter = rekursiv, alle Tiefen)
|
||||
l_cursor := f_list_objects_internal(
|
||||
l_objects := f_list_objects_internal(
|
||||
i_prefix => i_prefix
|
||||
,i_delimiter => ''
|
||||
,i_start_with => null
|
||||
,i_limit => 0
|
||||
);
|
||||
|
||||
-- Nur echte Objekte löschen, keine Pseudo-Ordner
|
||||
for rec in (select object_name, is_folder from table(l_objects))
|
||||
loop
|
||||
fetch l_cursor into l_object_name, l_object_size, l_last_modified, l_is_folder, l_etag;
|
||||
exit when l_cursor%notfound;
|
||||
|
||||
-- Nur echte Objekte löschen, keine Pseudo-Ordner
|
||||
if l_is_folder = 'N'
|
||||
if rec.is_folder = 'N'
|
||||
then
|
||||
l_response := f_make_request(
|
||||
i_method => 'DELETE'
|
||||
,i_url => f_build_url(l_object_name)
|
||||
,i_url => f_build_url(rec.object_name)
|
||||
);
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
close l_cursor;
|
||||
exception
|
||||
when others
|
||||
then
|
||||
if l_cursor%isopen
|
||||
then
|
||||
close l_cursor;
|
||||
end if;
|
||||
raise;
|
||||
end p_delete_folder;
|
||||
|
||||
procedure p_rename_object (
|
||||
|
||||
Reference in New Issue
Block a user