Rabu, 27 Maret 2013

Delete multiple file on APEX metadata

Untuk keperluan delete file yang ada di aplikasi APEX, APEX telah menyediakan tool untuk melakukan delete file, cuma masih harus satu persatu. jadi kalau kita ingin melakukan banyak file itu yang jadi masalah.

Namun di dalam apex sendiri telah diberikan script untuk melakukan delete metadata tsb contoh saat kita ingin menghapus image "xxx.jpg" maka scriptnya adalah
begin
    wwv_flow_api.create_or_remove_file( 
        p_location => 'APPLICATION',
        p_name     => 'xxx.jpg',
        p_mode     => 'REMOVE',
        p_type     => 'IMAGE');
end;
/

Yang perlu diperhatikan adalah p_type bisa 'IMAGE','CSS'atau 'STATIC'. jadi untuk hapus secara banyak contoh satu WS maka kita harus modifikasi seperti ini. contoh dibawah adalah saya ingin menghapus seluruh image yang tersimpan dalam WS='TEST'.

declare
 v_id number;
 v_ws varchar2(100):='TEST';
begin
--- cari workspace ID
select workspace_id into v_id
from apex_workspaces
where WORKSPACE=upper(v_ws);
---set security supaya bisa di exsekusi diluar apex 
wwv_flow_api.set_security_group_id(v_id);
---cursor 
FOR x IN (select *
from APEX_WORKSPACE_FILES
where MIME_TYPE like 'image/%') LOOP
    wwv_flow_api.create_or_remove_file( 
        p_location => 'WORKSPACE',
        p_name     => x.FILE_NAME,
        p_mode     => 'REMOVE',
        p_type     => 'IMAGE');
END LOOP;
commit;
end;
/

Tidak ada komentar :

Posting Komentar