无法识别PL / SQL的问题

时间:2009-01-15 10:26:46

标签: plsql

以下PL / SQL将不会执行,只会将“无效参数”作为错误返回。我已经离开了逐个评论eavery行,我可以改变我收到的错误,但我不能让proc运行,因为我无法确定错误所在的位置,它可能位于权限或正在执行的用户但是任何帮助都会感激不尽。这是proc

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';

while(job_state!='COMPLETED')和(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; 

结束循环;

dbms_datapump.detach(H1);

END;

4 个答案:

答案 0 :(得分:1)

我找到了一些东西:

见这里:http://petermag.blogspot.com/2008/01/export-datapump-how-to-do-via-plsql.html

转储文件已存在时,出现无效参数错误错误。

答案 1 :(得分:0)

您可以下载SQL Developer并使用其调试器(它是免费的)。

见这里:http://www.oracle.com/technology/software/products/sql/index.html

答案 2 :(得分:0)

谢谢那个小伙子。我继续调试并将其钉在一行..

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

这是一个。评论出来,一切都是膨胀的。该错误表明这些值中的一个无效,我猜测它是奇怪的'''speccs_web_test''',但搜索似乎表明这是正确的,这是因为该参数是一个列表而且避风港可以是' (''name'',''name'');转换为('name','name')IN列表的有效格式。

我可能会在一两分钟内对它进行排序,但你认为我会在几小时前把它钉在上面:)

答案 3 :(得分:0)

对于这个特殊问题,因为schema_name speccs_web_test不是大写的。 SPECCS_WEB_TEST很好,proc现在正在运行;)

相关问题