This PL/SQL block allows end users to export multiple Oracle APEX applications simultaneously. It collects the selected application IDs, generates their export files, and packages them into a single downloadable ZIP file for convenience.
Step1: Create Classic Report with following query
SELECT
APEX_ITEM.CHECKBOX2(1, APPLICATION_ID, p_attributes => 'class="my_value"') AS SELECT_BOX,
OWNER,
WORKSPACE,
APPLICATION_ID,
APPLICATION_NAME,
CREATED_BY,
CREATED_ON,
LAST_UPDATED_BY,
LAST_UPDATED_ON
FROM APEX_APPLICATIONS;
Step2: Create Following Apex Page Items
Step3: Paste the following code in Function global declaration
$(document).ready(function () {
$('.my_value').on('click', function () {
var app_id = "";
$('.my_value:checked').each(function () {
app_id += $(this).val() + ",";
});
app_id = app_id.substring(0, app_id.length - 1);
$s('P4_SEL_APP_ID', app_id);
});
});
When a checkbox is clicked in the report, the application IDs from the selected rows are stored in a page item as a comma-separated list.
Step 4: Paste the following PL/SQL code into a page process and configure it to run on button click.
declare
l_files apex_t_export_files;
l_all_files apex_t_export_files := apex_t_export_files();
l_zip blob;
l_export apex_data_export.t_export;
l_original_id boolean := (:P4_ORIGIONAL_ID = 'Y');
l_app_ids apex_t_varchar2;
begin
l_app_ids := apex_string.split(:P4_SEL_APP_ID, ',');
for i in 1 .. l_app_ids.count loop
l_files := apex_export.get_application(
p_application_id => l_app_ids(i),
p_with_original_ids => l_original_id,
p_with_date => true,
p_with_comments => true
);
l_all_files := l_all_files multiset union all l_files;
end loop;
if l_app_ids.count > 1 or :P4_ZIPFILE = 'Y' then
l_zip := apex_export.zip(p_source_files => l_all_files);
l_export.content_blob := l_zip;
l_export.mime_type := 'application/zip';
l_export.file_name := case
when l_app_ids.count > 1 then 'apps_export.zip'
else 'f' || l_app_ids(1) || '.zip'
end;
l_export.format := 'zip';
l_export.as_clob := false;
else
l_export.content_clob := l_all_files(1).contents;
l_export.mime_type := 'text/plain';
l_export.file_name := 'f' || l_app_ids(1) || '.sql';
l_export.format := 'sql';
l_export.as_clob := true;
end if;
apex_data_export.download(p_export => l_export);
end;
Comments
Post a Comment