2017-02-06 46 views
1

我使用dbms_scheduler.create_job從我的Oracle Apex應用程序啓動了一個plsql過程。工作立即開始。如何在預定作業中使用Oracle Apex會話

該過程失敗,因爲它使用Oracle Apex集合,並且它不會在Oracle Apex應用程序上下文之外運行。

互聯網上有一些代碼examples顯示如何創建Oracle Apex應用程序上下文,但我想知道是否可以使用現有上下文。例如通過將會話ID傳遞給作業並在那裏重新使用它。

如果這是可能的,那麼它將如何完成,這對於Oracle Apex 4.02和5.02會有所不同?

+0

結束了創建通過將應用程序ID,工作空間ID和用戶應用程序的過程的新的Apex應用程序上下文。 – Rene

回答

0

創建一個類型,將其傳遞給您的工作中使用的過程。用參數創建作業。

包括例如具有表型包括Blob和文件名:

CREATE OR REPLACE TYPE blob_files AS OBJECT(
       attachment BLOB, 
       filename varchar2(255), 
       mime_type varchar2(255) 
      ) 

create or replace type blobs as table of blob_files; 

declare 
    attachments BLOBS; 
    i NUMBER; 
begin 
    select blob_files(invoice_blob,invoice_filename, mime_type) 
    BULK COLLECT INTO attachments 
    from receive.inv_invoice_blobs 
    where invoice_id = 223730; 

    i := attachments.FIRST; 
    WHILE i IS NOT NULL LOOP 
    htp.p(dbms_lob.getlength(attachments(i).attachment) || ' ' || attachments(i).filename); 
    i := attachments.NEXT(i); 
    END LOOP; 
end; 
相關問題