sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

当前位置:Oracle研究中心 > 故障案例 >

【案例】Oracle报错PLS-00378 PLS-00439产生原因和MOS官方解决办法

时间:2016-11-12 21:31   来源:Oracle研究中心   作者:代某人   点击:

天萃荷净 PLS-00378此版本的PL / SQL编译单元无效
原因:编译单元是一个文件,其中包含的PL / SQL传递给编译器的源代码。只包含块,宣言,声明和子程序的编译单元是不允许的。此错误发生时,其他一些语言结构传递给编译器。

行动:确保编译单元包含唯一块,声明,声明和子程序。


PLS-00379 CASE语句不包括在此版本的PL / SQL
原因:正在编译单元包含一个CASE语句。然而,当前版本的PL / SQL不支持CASE语句。

行动:删除从CASE语句的编译单元。


PLS-00380的职能和程序,不包括在此版本的PL / SQL
原因:正在编制的程序中包含一个函数或过程的声明。

行动:请不要使用。


发现在“ 字符串 “中的子查询或INSERT列和变量的PLS-00381类型不匹配
原因:一列和变量的数据类型不匹配。中遇到的一个子查询或INSERT语句的变量。

行动:改变变量的数据类型匹配的列。


PLS-00382表达是错误的类型
原因:有一个表达的背景下,在它被发现的错误的数据类型。

操作:更改数据类型的表达。您可能要使用的数据类型的转换功能。


“ 串 “IN或NOT IN子句内发现PLS-00383类型不匹配
原因:在测试集如x不在(选择Y)的成员,表达的X和Y不匹配的数据类型,它是不明的隐式转换的要求,以纠正不匹配。

行动:更改表达式,使他们的数据类型匹配。你可能想使用在选择列表中的数据类型转换功能。


发现在更新的SET子句中的“ 串 “ PLS-00384类型不匹配
原因:在UPDATE语句的SET子句等号左边的列不匹配的数据类型列,表达式或子查询,等号右边,它是不明的隐式转换需要纠正不匹配。

行动:更改表达式,使他们的数据类型匹配。你可能想在SET子句中使用数据类型转换函数。


PLS-00385类型不匹配“ 串 “在SELECT ... INTO语句
原因:左边和右边的INTO子句在SELECT INTO语句的表达式中数据类型不匹配,它是不明的隐式转换的要求,以纠正不匹配。

行动:更改表达式,使他们的数据类型匹配。你可能想使用在选择列表中的数据类型转换功能。


PLS-00386类型不匹配,发现在“ 字符串 “之间FETCH游标到变量
原因:在FETCH语句的INTO列表中的任务目标在游标声明的选择列表中的相应列的数据类型不匹配,它是不明的隐式转换的要求,以纠正不匹配。

行动:更改游标声明或更改数据类型的赋值的目标。你可能想用光标查询选择列表中的数据类型转换功能。


PLS-00387到变量,不能是一个数据库对象
原因:在INTO列表项目的FETCH或SELECT语句被认为是一个数据库对象。探索INQUIRY引入了一个用户定义的输出值被分配到的变量列表。因此,数据库对象不能出现在INTO列表。

行动:检查列表项的拼写。如果有必要,INTO列表中删除的项目或一个用户定义的输出变量替换它。


PLS-00388未定义列的字符串中的子查询
原因:子查询中包含列名,这不是在指定的表中定义。

行动:更改表达式指定一个列被定义。


PLS-00389的表,视图或别名命名为“ 串 “在这种情况下不允许
原因:表,视图或别名名称对应到一个常规(非对象)的表出现在不适当的情况下。

行动:删除参考,或者,如果你打算编写此列引用,修复等。


PLS-00390未定义列的“ 串 “在INSERT语句
原因: INSERT语句包含了一个未定义的列名。

行动:列名的拼写检查,然后更改,因此,它是指只定义的列的表达式。


PLS-00391未定义列的“ 串 “在UPDATE语句
原因:一个更新语句是指不被更新的表或视图定义的列。

行动:检查列名的拼写,然后修改语句,这样,它只是指定义的列。


PLS-00392之间的参数类型不匹配
原因:如Y和Z X之间的比较,表达式的X,Y,和Z不匹配的数据类型,它是不明的隐式转换的要求,以纠正不匹配。

行动:更改表达式,使他们的数据类型匹配。您可能要使用的数据类型的转换功能。


PLS-00393错误的号码列在SELECT ... INTO语句
原因:一个SELECT INTO语句...选择的列数不匹配,在INTO子句中的变量的数量。

行动:改为子句选择列表中的数列或变量的数量,这样的数字匹配。


PLS-00394错误的数量值在FETCH语句的INTO列表
原因: INTO子句的FETCH语句中的变量数不匹配,在游标声明的列数。

行动:更改在游标声明的列数或INTO子句中变量的数量,这样的数字匹配。


PLS-00395错误的INSERT语句的子句中的值值
原因:在INSERT语句中的列数不匹配VALUES子句中的值的数目。例如,下面的语句是错误的,因为没有列指定 ??值20:

INSERT INTO EMP(EMPNO,ENAME)VALUES(7788,“SCOTT”,20);

操作:更改列的列表或VALUES清单中的项目数,这样的数字匹配的项目数量。


PLS-00396 INSERT语句的子查询产生错误列数
原因:在INSERT语句中的列数不匹配,子查询选择列表中的列数。例如,下面的语句是错误的,因为没有相应的列指定 ??为COL3:

INSERT到EMP(ENAME,EMPNO)
SELECT COL1,COL2,COL3
从...

行动:改变中的项目数列列表的INSERT语句或选择列表中的项目数量,使数字相匹配。


PLS-00397至IN的参数类型不匹配
原因:在一个集成员,如X在(Y,Z轴),表达的X,Y和Z的测试中数据类型不匹配,它是不明的隐式转换的要求,以纠正不匹配。

行动:更改表达式,使他们的数据类型匹配。您可能要使用的数据类型的转换功能。


PLS-00398错误的号码列在联合,相交,或减号表达
原因: SELECT子句的左侧和工会的权利,INTERSECT或减号表达不选择相同数量的列。例如,下面的语句是错误的,因为在选择列表中不包含相同数量的项目:

光标my_cur是ENAME FROM EMP SELECT
相交选择ENAME,从EMP EMPNO;

行动:更改选择列表,使它们包含相同数量的项目。


PLS-00399不同类型的联合列,INTERSECT或减号表达
原因:选择列表的左侧和工会的权利,INTERSECT或减号表达至少选择一个列的数据类型匹配。例如,下面的语句是错误的,因为不断3数据类型,而SYSDATE日期数据类型:

光标my_cur是3 SELECT FROM EMP 
相交的SELECT SYSDATE FROM EMP;

行动:更改选择列表,使他们中的数据类型相匹配。你可能想使用数据类型转换功能,在选择列表中的一个或多个查询。


PLS-00400之间的游标SELECT语句和返回值的列数不同
原因:在游标声明,指定返回类型(如返回EMP%ROWTYPE的),但返回的列的值的数目不匹配的选择列表项的数目。

行动:改变光标的返回类型或选择列表,以便返回的列值选择列表项的数目相匹配。


PLS-00401游标的SELECT语句返回值之间的不同列类型“ 字符串 “
原因:在游标的声明中,被指定返回类型(如返回EMP%ROWTYPE的),但返回的列的值及其对应的选择列表项有不同的数据类型。

行动:改变光标的返回类型,或选择列表中,使每一个返回的列的值和其相应的选择列表项有相同的数据类型。


PLS-00402别名光标的SELECT列表中,以避免重复的列名
原因:声明游标是一个SELECT语句,它包含了重复的列名。这种提法是不明确的。

行动:在选择列表的别名替换重复的列名。


PLS-00403表达' 字符串 '不能被用来作为一个SELECT / FETCH语句的INTO目标
原因:一个FETCH语句是无法在其指定的列表值赋值的目标,因为目标是不是一个合法成立,并宣布的变量。例如,下面的赋值是非法的,因为琼斯是一个字符串,而不是一个变量:

提取到“琼斯my_cur;

动作:检查拼写和分配目标的声明。确保形成变量名的规则得到遵守。


PLS-00404“ 串 “ 光标必须申报更新使用电流
原因: CURRENT OF cursor_name子句的使用是合法的,只有cursor_name用FOR UPDATE子句声明。

行动: FOR UPDATE子句添加到光标的定义,或者不使用CURRENT OF cursor_name子句。


在这种情况下不允许PLS - 00405子查询
原因:在不适当的情况下,如使用子查询:

(SELECT DEPTNO从EMP的WHERE ...)= 20,那么...

只允许在SQL语句中使用子查询。

行动:通过使用一个临时变量,可以得到相同的结果:

选择EMP的WHERE DEPTNO ... INTO temp_var;
如果temp_var = 20,那么...


PLS-00406的子查询中的SELECT列表的长度必须符合任务目标的数量
原因:查询选择列表是不相同的长度将接收返回值的目标清单。例如,下面的语句是错误的,因为子查询返回两个值,一个目标:

更新EMP SET ENAME =
(SELECT ENAME,从EMP EMPNO ENAME ='史密斯)...

行动:名单的变化,使它们包含相同数量的项目。


PLS-00407'*'这里不允许列清单
原因:使用星号(*)作为列名列表的缩写。然而,在这种情况下,列名必须写明确。

行动:星号替换列名的列表。


PLS-00408的重复列的字符串 '不允许在INSERT或UPDATE
原因: UPDATE或INSERT语句中有一列清单,其中包含重复的列名。

行动:检查列名的拼写,然后消除重复。


PLS-00409重复的变量' 字符串 '到列表不允许
原因:出现两次相同的变量在一个SELECT INTO列表或FETCH语句。

行动:从进入名单中删除的变量之一。


PLS - 00410纪录,表或参数列表中的重复字段不允许
原因:当一个用户定义的记录被宣布,同名的两个领域。数据库表中的列名一样,在用户定义的记录的字段名称必须是唯一的。

行动:检查字段名称的拼写,然后删除重复的。


在子查询中的聚合和PLS-00411的值的数目不匹配
原因:声明的形式聚集在子查询,在总量和子查询的值的数字是不平等的。例如,代码可能看起来像这样:

... (10,20,30)=(SELECT EMPNO,DEPTNO FROM EMP WHERE ...);

行动:修改聚合或子查询,使数字值匹配。


PLS-00412这个函数或过程作为参数允许值的列表
原因:括号一个由逗号分隔的值列表(也就是说,一个聚合)是在错误的情况下使用。例如,下面的用法是无效的:

WHERE(COL1,COL2)>(COL4选择COL3,从MY_TABLE ...)

然而,一个等号,可以采取一个值列表和一个子查询,左,右手边的参数,分别为。所以,以下的使用是有效的:

WHERE(COL1,COL2)=(SELECT COL3,COL4从MY_TABLE ...)

行动:重写表达。例如,该条款:

WHERE(COL1,COL2)>(COL4选择COL3,从MY_TABLE ...)

可以改写为:

在WHERE COL1>(选择从MY_TABLE COL3 ...)
COL2>(选择MY_TABLE COL4 ...)


PLS - 00413在CURRENT OF子句标识不是一个游标名称
原因:在CURRENT OF子句的标识符名称的游标以外的对象。

行动:检查标识符的拼写。确保,它的名字在DELETE或UPDATE语句光标光标本身,而不是一个for循环变量命名。


PLS-00414没有列' 字符串表
原因:表名称或别名来限定列的参考,但不列在该表中发现。要么从未定义列或列名拼写错误。

行动:确认列定义和检查列名的拼写。


PLS - 00415“ 字符串 “是一个OUT参数,并不能出现在函数
原因:一个OUT或OUT参数正式被用来在功能规格。

行动: IN参数更改参数。


PLS-00416的解码的第三个参数不能为NULL
原因:以解码的第三个参数是NULL。

操作:输入一个适当的类型和值的参数。


PLS-00417未能解决“ 作为一列字符串 “
原因:数据库表,查看,或在SQL语句中不存在指定的列,或不授予需要访问的表或视图的权限。

行动:检查表(或视图)和列名的拼写,确保存在的表和列。如果有必要,要求数据库管理员授予访问该表所需的特权。


PLS-00418阵列绑定类型必须匹配的PL / SQL表的行类型
原因:主机阵列是一个绑定到一个PL / SQL表参数的PL / SQL子程序传递(由Oracle预编译程序,例如)。然而,数组元素的数据类型和PL / SQL表中的行是不相容的。因此,绑定失败。

行动:更改数组元素或PL / SQL表中的行的数据类型的数据类型兼容。


PLS-00419参考远程属性不允许
原因:试图引用一个远程游标属性,这是不允许的。例如,代码可能看起来像这样:

如果SQL%NOTFOUND @纽约,然后...

行动:不要试图引用一个远程光标属性。


PLS-00420不能远程调用内置的例程
原因:尝试向远程调用一个内置的PL / SQL函数,这是不允许的。例如,代码可能看起来像这样:

my_sqlerrm:=的SQLERRM @纽约;



INSERT到EMP(my_empno,STANDARD.RTRIM @纽约(my_ename)的值,
...); 

行动:始终调用内置函数在本地从未指定一个数据库链接。


PLS-00421的代名词定义嵌套太深;同义词可能循环
原因:直接或间接的代名词的定义本身而言,创造一个圆形的定义。或一个同义词链,太长的PL / SQL编译器处理,被定义。

行动:重新定义的同义词,消除循环的定义。如果有必要,缩短链的同义词。


PLS-00422的PL / SQL翻译没有为这个绑定变量的bindtype
原因:通过主机变量(由Oracle预编译程序,例如)具有约束力的PL / SQL。然而,它的数据类型是不与任何PL / SQL数据类型兼容。因此,绑定失败。

行动:更改宿主变量的数据类型,使其与一个PL / SQL数据类型兼容。


PLS-00423 ORDER BY项必须是一个SELECT列表表达式
原因:在ORDER BY子句的SELECT语句中使用一个UNION,INTERSECT或MINUS集合运算符使用列别名。这是不允许的。在这种情况下,在ORDER BY子句中的表达式必须是无符号整数,指定选择列表项的序号位置。

行动:在ORDER BY子句的别名更改为无符号整数的问题中选择项目,指定序号位置。


PLS-00424的RPC默认可以不包括包状态
原因:尝试调用远端的子程序,的拖欠参数取决于包的状态,这是不允许的。实际参数调用远端的子程序时,必须明确地传递,如果相应的形式参数的依赖包的状态。

行动:通过明确每个实际参数调用远端的子程序。


在SQL PLS-00425,函数参数和返回类型必须是SQL类型
原因:当从SQL语句调用存储功能,通过错误类型的参数。是从SQL语句调用,存储功能必须满足以下几个要求,其中之一是其参数,如CHAR,DATE或NUMBER SQL数据类型。没有参数可以有非SQL类型,如Boolean,表或记录。

行动:确保所有的参数在函数调用SQL数据类型。


PLS-00426游标变量OUT参数的字符串不能被FETCH'ed或CLOSE'd
原因:当游标变量作为一个子程序的正式参数宣布,将获取和/或关闭游标变量,指定OUT参数模式。这是不允许的。在这种情况下,IN或OUT模式必须指定。

行动:从OUT到IN或IN OUT参数模式更改。


PLS-00427 RPC的默认不能使用时的标准版本不同建宏
原因:试图调用远端的子程序,其拖欠的参数值计算使用一个内建的操作。如果调用系统采用了不同的版本,比所谓的系统包装标准,拖欠表达必须是一个简单的数字或字符串常量,NULL或直接调用用户编写的功能。

行动:通过明确每个实际参数值调用远端的子程序。


PLS-00428 INTO子句,预计在此SELECT语句
原因: INTO子句的SELECT INTO语句被省略。例如,代码可能看起来像这样:

SELECT DEPTNO,DNAME,从部LO??C ...

而不是:

SELECT DEPTNO,DNAME,LOC从DEPT探索INQUIRY dept_rec的...

PL / SQL中,只有一个子查询被写入没有一个INTO子句。

行动:加入所需的INTO子句。


PLS-00429不受支持的功能与RETURNING子句
原因:以下情况之一:

RETURNING子句INTO子句不能用在同一语句
RETURNING子句目前不支持的对象typecolumns,长柱,记录,%rowtypes,远程表和子查询的INSERT。
这是ORA-28815。

行动:使用一个单独的select语句得到的值。


PLS-00430 FORALL的迭代变量字符串是不允许在这方面
原因: FORALL的迭代变量只能被用来作为下标。它不能被直接使用,或作为表达式的一部分。

行动:使用FORALL的,只是作为一个集合下标变量。


PLS-00431批量SQL属性,必须使用一个单一的指数
原因:多个索引指定的访问SQL的散装属性。

行动:使用整数数据类型的单一指标。


PLS-00432实施限制:不能使用FORALL和散装收集到了一起,在SELECT语句
原因: SELECT语句包含在FORALL和BULK收集成短语。

行动:不要使用FORALL和散装在SELECT语句中收集到了一起。


PLS-00433封装的标准不一致
原因: PL / SQL编译器无法找到应该存在于包标准的项目(如类型声明)。

行动:确保正确的版本,包装标准是在当前的Oracle数据库,然后重试编译。


PLS-00434的记录字段有不支持的类型:“ 串 “
原因:尝试使用不受支持的类型为记录字段。在此版本中,使用SQL92的DateTime类型(时间,时间戳,时区的时间,时区,间隔一年的时间戳记月,INTERVAL DAY TO SECOND)不支持记录字段。

行动:使用记录的字段只支持类型。


PLS-00435没有在大量的BIND的DML语句内不能使用FORALL的
原因: FORALL语句内声明的DML(SELECT / INSERT /删除/更新),不包含散装绑定变量。

行动: DML(SELECT / INSERT /删除/更新)FORALL语句内声明必须包含大量的绑定变量。


PLS-00436实施限制:不能引用领域的散装绑定记录表
原因:表(bulk_index)领域在运行时不支持。

行动:与平原FORALL的DML语句(SELECT / INSERT /删除/更新),而不是循环使用。


PLS-00437 FORALL的散装指数不能被用来在字符串条款
原因:不支持选举表(bulk_index)。

行动:返回散装到付,而不是使用。


PLS - 00438在LIMIT子句的值:' 字符串使用的是无效的
原因:在LIMIT子句批量评估值取在不适当的情况下被发现。例如,下面的语句是非法的,因为在批量提取的LIMIT子句预计数值。

行动:更改LIMIT子句的表达,使评价结果是兼容的数值。


PLS-00439一个LIMIT子句必须用在批量获取
原因:一个LIMIT子句内使用非批量提取。

行动:不要使用LIMIT子句用于非批量提取。

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【案例】Oracle报错PLS-00378 PLS-00439产生原因和MOS官方解决办法

本文由大师惜分飞原创分享,网址:http://www.oracleplus.net/arch/1249.html

Oracle研究中心

关键词:

PLS-00378

PLS-00439