2009-01-15 91 views
0

下面的PL/SQL將不會執行,只是簡單地返回'無效參數'作爲錯誤。我已經儘可能地逐條評論每一行,並且我可以改變我收到的錯誤,但是我無法讓proc運行,因爲我無法確定錯誤在哪裏,而且很可能存在於權限或執行用戶中,但是任何幫助將受到感謝。這裏的proc無法識別PL/SQL的問題

DECLARE ind NUMBER; - 環指數

h1 NUMBER; - 數據泵作業處理

percent_done NUMBER; - 完成作業的百分比

job_state VARCHAR2(30); - 跟蹤工作狀態

le ku $ _LogEntry; - WIP和錯誤信息

js ku $ _JobStatus; - 來自get_status的工作狀態 jd ku $ _JobDesc; - 來自get_status的職位描述

sts ku $ _Status; - 通過GET_STATUS

返回的狀態對象BEGIN

H1:= DBMS_DATAPUMP.OPEN ( '導出', 'SCHEMA',NULL, 'SQL_INSTALLER_01152009_1014', '最新'); DBMS_DATAPUMP.ADD_FILE (h1,'SQL_INSTALLER_01152009_1014.dmp','ORACLE_SCRIPT_RUNNER_BACKUP',NULL,1); DBMS_DATAPUMP.ADD_FILE (h1,'SQL_INSTALLER_01152009_1014.log','ORACLE_SCRIPT_RUNNER_BACKUP',NULL,3); DBMS_DATAPUMP.METADATA_FILTER(h1,'SCHEMA_LIST','''speccs_web_test''',NULL,NULL);

DBMS_DATAPUMP.START_JOB(h1);

percent_done:= 0;

job_state:='UNDEFINED';

而(job_state = '已完成'!)和(job_state = 'STOPPED'!)環

dbms_datapump.get_status(h1, dbms_datapump.ku$_status_job_error + 

dbms_datapump.ku $ _status_job_status + dbms_datapump.ku $ _status_wip,-1,job_state,STS); js:= sts.job_status;

if js.percent_done != percent_done then 

    percent_done := js.percent_done; 

end if; 

if (bitand(sts.mask,dbms_datapump.ku$_status_wip) != 0) then 

    le := sts.wip; 

else 

    if (bitand(sts.mask,dbms_datapump.ku$_status_job_error) != 0) then 

    le := sts.error; 

    else 

    le := null; 

    end if; 

end if; 

if le is not null then 

    ind := le.FIRST; 

    while ind is not null loop 

    ind := le.NEXT(ind); 

    end loop; 

end if; 

end loop;

dbms_datapump.detach(h1);

END;

回答

0

對於這個特定的問題,這是因爲模式名speccs_web_test不大寫。 SPECCS_WEB_TEST很好,proc正在運行;)

0

在此謝謝。我已經繼續調試並將它釘在一條線上。

DBMS_DATAPUMP.METADATA_FILTER(h1,'SCHEMA_LIST','''speccs_web_test'',NULL,NULL);

這是一個。評論它,所有的都是膨脹的。錯誤是指示這些值中的一個是無效的,我會冒險猜測這是奇怪的'''speccs_web_test'''但搜索似乎表明這是正確的,這是因爲該參數是一個列表,避風港可以' (''name'',''name'');將其轉換爲('name','name')IN列表的有效格式。

我可能會在一兩分鐘進行排序,但你認爲我的幾小時前釘它:)