下面的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;