Plsql 获得';无效参数';PL/SQL块中存在错误

Plsql 获得';无效参数';PL/SQL块中存在错误,plsql,Plsql,下面的PL/SQL将不执行,只返回“Invalid Argument”作为错误。我已经一行一行地注释了eavery,我可以改变我收到的错误,但我无法让proc运行,因为我无法确定错误所在,它可能存在于权限或执行用户中,但任何帮助都将得到感激。这是程序 声明 标识号;——循环索引 h1编号;——数据泵作业句柄 完成百分比数字;——完成作业的百分比 约伯州瓦查尔2(30);——跟踪工作状态 le ku$\u LogEntry;——用于WIP和错误消息 js ku$\u工作状态;——来自get_sta

下面的PL/SQL将不执行,只返回“Invalid Argument”作为错误。我已经一行一行地注释了eavery,我可以改变我收到的错误,但我无法让proc运行,因为我无法确定错误所在,它可能存在于权限或执行用户中,但任何帮助都将得到感激。这是程序

声明
标识号;——循环索引
h1编号;——数据泵作业句柄
完成百分比数字;——完成作业的百分比
约伯州瓦查尔2(30);——跟踪工作状态
le ku$\u LogEntry;——用于WIP和错误消息
js ku$\u工作状态;——来自get_status的作业状态
jd ku$_JobDesc;——来自get_status的职务描述
sts ku$_状态;——get_status返回的状态对象
开始
h1:=DBMS_DATAPUMP.OPEN('EXPORT','SCHEMA',NULL,'SQL_INSTALLER_01152009_1014','LATEST');
添加文件(h1,'SQL\u INSTALLER\u 01152009\u 1014.dmp','ORACLE\u SCRIPT\u RUNNER\u BACKUP',NULL,1);
DBMS_DATAPUMP.ADD_文件(h1,'SQL_INSTALLER_01152009_1014.log','ORACLE_SCRIPT_RUNNER_BACKUP',NULL,3);
元数据过滤器(h1,'SCHEMA'u LIST','speccs'u web'u test',NULL,NULL);
DBMS_数据泵。启动_作业(h1);
完成百分比:=0;
作业状态:=“未定义”;
而(作业状态!=“已完成”)和(作业状态!=“已停止”)循环
dbms_datapump.get_状态(
h1,
dbms\u datapump.ku$\u状态\u作业\u错误+
dbms\u datapump.ku$\u状态\u作业\u状态+
dbms_datapump.ku$_status_wip,
-1,
乔布州,
sts);
js:=sts.job\u状态;
如果js.percent_完成!=那你完成了多少
完成百分比:=js.percent\u done;
如果结束;
如果(位和(sts.mask,dbms\u datapump.ku$\u status\u wip)!=0),则
le:=sts.wip;
其他的
如果(位和(sts.mask,dbms\u datapump.ku$\u status\u job\u error)!=0),则
le:=sts.error;
其他的
le:=null;
如果结束;
如果结束;
如果le不是null,那么
ind:=le.FIRST;
而ind不是空循环
ind:=le.NEXT(ind);
端环;
如果结束;
端环;
dbms_datapump.detach(h1);
结束;

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

请看这里:

我发现了一些东西:

请看这里:


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

谢谢你,小伙子。我已经继续调试了,并将其固定在一行中

元数据过滤器(h1,'SCHEMA'u LIST','speccs'u web'u test',NULL,NULL)

就是这个。把它评论出来,一切都好了。错误表明其中一个值无效,我猜这是奇怪的“speccs_web_test”,但搜索似乎表明这是正确的,这是因为该参数是一个列表,可以是“(“name”,“name”);它转换为('name','name')一种有效的IN列表格式


我可能会在一两分钟内对其进行排序,但您认为我在几个小时前就已经解决了:)

对于这个特定的问题,这是因为schema\u name speccs\u web\u测试不是大写的。SPECCS\u WEB\u测试正常,进程正在运行;)