declare l_rename_object_details dbms_cloud_oci_object_storage_rename_object_details_t; l_put_response dbms_cloud_oci_obs_object_storage_put_object_response_t; l_rename_response dbms_cloud_oci_obs_object_storage_rename_object_response_t; l_delete_response dbms_cloud_oci_obs_object_storage_delete_object_response_t; l_status_code integer; l_filename varchar2(4000); l_content_type varchar2(4000); l_blob blob; l_loc number; plsql_sdk_error exception; -- 日本語に対応させる function cs_workaround(str varchar2) return varchar2 as begin return utl_url.escape(str, false, 'AL32UTF8'); end cs_workaround; begin case when :APEX$ROW_STATUS = 'C' then begin select filename, mime_type, blob_content into l_filename, l_content_type, l_blob from apex_application_temp_files where name = :P5_FILE; exception when no_data_found then l_blob := null; end; if lengthb(:P5_NAME) > 0 then l_filename := :P5_NAME; end if; l_filename := cs_workaround(l_filename); l_put_response := dbms_cloud_oci_obs_object_storage.put_object ( namespace_name => :G_NAMESPACE_NAME , bucket_name => :P5_BUCKET_NAME , object_name => l_filename , content_type => l_content_type , put_object_body => l_blob , region => :G_REGION , credential_name => :G_CREDENTIAL_NAME ); l_status_code := l_put_response.status_code; when :APEX$ROW_STATUS = 'U' then l_rename_object_details := new dbms_cloud_oci_object_storage_rename_object_details_t; l_rename_object_details.source_name := :P5_ID; l_rename_object_details.new_name := :P5_NAME; l_rename_response := dbms_cloud_oci_obs_object_storage.rename_object ( namespace_name => :G_NAMESPACE_NAME , bucket_name => :P5_BUCKET_NAME , rename_object_details => l_rename_object_details , region => :G_REGION , credential_name => :G_CREDENTIAL_NAME ); l_status_code := l_put_response.status_code; when :APEX$ROW_STATUS = 'D' then l_delete_response := dbms_cloud_oci_obs_object_storage.delete_object ( namespace_name => :G_NAMESPACE_NAME ,bucket_name => :P5_BUCKET_NAME ,object_name => cs_workaround(:P5_NAME) , region => :G_REGION , credential_name => :G_CREDENTIAL_NAME ); l_status_code := l_put_response.status_code; end case; if l_status_code != 200 then raise plsql_sdk_error; end if; end;