sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

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

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

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

天萃荷净 PLS-00450这个私有类型的变量不能在这里声明
原因:使用一个变量声明,宣布私人在一些其他编译单元的类型。

行动:不要使用这种类型的私有变量声明。


PLS-00452的子程序' 串 '违反其相关的杂
原因:打包的功能不能被称为SQL语句,其纯度水平,除非是由编码在包装规格1 RESTRICT_REFERENCES杂断言。该pragma,这是用来控制副作用,告诉的PL / SQL编译器拒绝打包的功能,读/写访问数据库表,公共打包的变量,或两者兼而有之。违反该pragma一个SQL语句,会导致一个编译错误。

行动:提高纯度级别的功能,或放松的pragma限制。


PLS-00453远程操作对象表或用户定义类型的列不允许
原因:远程对象表或用户定义类型列的引用被发现。

行动:不要提到它。


PLS-00454表表达式返回到子句,不能远程或子查询
原因:远程表或子查询的参考,在SQL语句中发现一个INTO子句返回。

行动:不要提到它,或不使用后续的SELECT语句。


PLS-00455游标' 串 '不能使用动态SQL OPEN语句
原因:一个REF CURSOR动态开放,有返回类型。然而,不仅没有返回类型REF CURSOR,可以打开一个嵌入式动态OPEN语句。

行动:没有返回类型定义一个REF CURSOR,并在声明中使用它。


PLS-00456项目“ 串 “是不是光标
原因:给定的变量不是一个游标,因此无法打开或取自。

行动:检查拼写和给定的变量声明。


PLS-00457表达式必须是SQL类型
原因:错误的类型的表达是在使用或动态RETURNING子句。在使用或动态RETURNING子句,表达式不能非SQL类型,如Boolean,索引表,并记录。

行动:更改表达式的类型到SQL类型。


PLS-00458的子程序' 串 '不能被称为一个可重复的子程序
原因:子程序是不可重复的,不能从一个可重复的子程序调用。

行动:删除通话或删除可重复。


PLS-00459中不允许使用此功能可重复的子程序
原因:动态SQL语句或自治事务:以下特点之一,被指定在重复的子程序。

行动:删除报表或删除可重复。


PLS-00460可重复的子程序' 字符串 '是RNDS,WNDS,RNPS和WNPS
原因:重复子程序既不能读取数据库状态(RNDS),写入数据库的状态(WNDS),读包状态(RNPS),也不会写包状态(WNPS)。

行动:请子程序是RNDS,WNDS,RNPS和WNPS或删除可重复。


PLS-00461可重复的之间的信息规范和“身体字符串不匹配“
原因:的重复性宣布在子程序的规范,但在它的身上,反之亦然。

行动:确保规范和身体都宣称可重复。


PLS-00462嵌套子程序的字符串 '是可重复的
原因:没有可重复声明一个可重复的子程序嵌套子程序。如果一个子程序是可重复的,其所有的嵌套子程序可重复声明。

行动:宣布可重复嵌套子程序。


PLS-00483异常“ 串 “可能会出现在一个异常处理程序,在这个街区
原因:异常出现在两个不同的,当在一个PL / SQL块或子程序的异常处理部分的条款(即两个不同的异常处理)。

行动:删除异常之一。


PLS-00484多余的例外“字符串 '和' 串 '必须出现在相同的异常处理程序
原因: EXCEPTION_INIT杂用不同的异常被初始化为相同的Oracle错误号。然后,他们在不同的异常处理程序,在相同的异常处理部分引用。如引用冲突。

行动:删除一个例外,或把它初始化为一个不同的Oracle错误号。


PLS-00485的异常处理程序中,“ 串 “必须是一个例外名称
原因:不作为例外宣布标识符WHEN子句出现异常处理程序。唯一例外的名称是在WHEN子句无效。

行动:检查异常的名称的拼写,并确保正确被宣布为异常。


PLS-00486选择列表不能被括在括号
原因:在SELECT语句的选择列表被括在括号中,如在:

选择从DEPT(DEPTNO,DNAME,LOC)到...

这打破SQL语法规则。括号不是必需的,因为关键字的选择和划定的选择列表。

行动:封闭选择列表中删除括号。


PLS-00487无效的参考变量' 字符串 '
原因:一个变量被引用的方式,是与它的数据类型不一致。例如,一个标量变量可能会被误为创纪录的引用,如下:

的DECLARE
光标emp_cur是SELECT EMPNO,ENAME,SAL FROM EMP;
EMP_REC emp_cur%ROWTYPE的;
my_sal NUMBER(7,2);
BEGIN ... total_sal:= total_sal + my_sal.sal;  - 无效......

行动:检查变量的名称的拼写。确保变量被声明和宣言和参考有关数据类型是一致的。


PLS - 00488无效的变量声明:对象' 串 '必须是一个类型或亚型
原因:数据类型说明符中的一个变量声明没有指定类型的法律。例如,%TYPE属性可能不会被添加到一个声明,如:

的DECLARE
my_sal emp.sal%型;
my_ename emp.ename;  - 失踪%类型...

当声明一个常量或变量,自动提供一列的数据类型,使用%TYPE属性。同样,声明一个记录时,自动行提供的数据类型,使用%ROWTYPE属性。

行动:确保数据类型说明符指定一个合法的类型。请记住,在必要时使用%TYPE和%ROWTYPE属性。


PLS-00489无效的表参考:“ 串 “必须是列在此表达
原因:在一个查询,选择列表项是指在FROM子句中的表,而不是到数据库列。

行动:列名的拼写检查,确保在选择列表中的每一列是指在FROM子句中的表,然后重新执行查询。


PLS-00490非法声明
原因:预计在一份声明中使用的常量,变量,函数调用,或不完整的陈述。例如,而不是调用表达式的函数,它可能已被作为一个语句(如果它是一个过程)。

行动:检查语句,从而确保它的命令,标识符,运算符,分隔符,终止形成一个完整的,有效的PL / SQL语句。


PLS-00491数字字面所需
原因:一个常量或变量需要使用数字文字。例如,代码可能看起来像这样:

my_ename VARCHAR2(max_len);

而不是

my_ename VARCHAR2(15);

指定一个VARCHAR2变量的最大长度时,必须使用一个整数字面。

行动:更换标识的文字与数字。


PLS-00492的变量或常量的初始化可能不是指在同一个包中声明的函数
原因:如果一个包声明中的p声明一个函数f,该功能可能无法在同一包装规格的任何变量声明中使用。这是因为一个圆形的实例化的问题:为了充分化的包装规格,变量必须初始化。要初始化的变量,在函数体的包体代码必须执行。这需要被实例化,包体。然而,包体不能被实例化,直至包装规格完全实例。

行动:删除从变量的初始化函数的参考。这往往是一种技术将变量初始化的变量声明(包装规格)包体初始化块。


PLS-00493无效引用到一个服务器端的对象,或在当地的环境功能
只有PL / SQL对象的上下文中被发现的原因:一个服务器端对象的引用(例如,表列)或函数(如SUM组功能的AVG,MIN,MAX ...)目前,如在一个局部函数的参数列表或(本地)PL / SQL表的索引。

行动:重写违规语句;或者,如果一个本地函数调用是问题的情况下,非本地函数(无论是包装或顶层)。


PLS-00494成多个记录的强制目标不支持
原因:到到创纪录的SELECT或FETCH指定比单一记录类型的目标和所需的列类型的胁迫名单匹配列表。这是正确的检查类型,但目前尚不支持。

行动:创建一个新的记录类型,容纳所有的列类型或代码选择到每个源列的目标。


PLS-00495列太多SELECT INTO语句后爆破记录的目标......
原因:类型检查表明,在列的SELECT或FETCH成纪录被收集在INTO列表。闯入其领域的记录。有没有足够的领域在每一列的纪录。

行动:改为子句的列数或记录变量中(S),使它们匹配。


PLS-00496太少,列在SELECT ... INTO语句后爆破记录目标
原因:类型检查表明,在列的SELECT或FETCH成纪录被收集在INTO列表。闯入其领域的记录。没有足够的列填写的记录中的所有字段。

行动:改为子句的列数或记录变量中(S),使它们匹配。


PLS-00497单行和多行(散装)之间不能混用,在INTO列表
原因:以下情况之一:

当BULK语法(例如,大量收集到)用于检索数据,在进入列表中的每一个变量都有相应列的类型是一个集合的类型。
大部分是不使用时,在进入列表中的每一个变量是兼容的类型与相应的列。
行动:使所有的变量有正确的数据类型变为列表。


PLS-00498非法使用前其声明类型
原因:声明一个变量或常量是一个类型的声明出现在稍后的编译单元或另一种类型的声明出现在稍后的编译单元声明的类型或亚型。

行动:确保类型声明之前在其使用的变量/常量/类型声明。


PLS - 00499到强迫记录的集合不支持
原因:一个SELECT或FETCH被裹挟到一个变量,这是一个记录的集合,可以指定一个列清单。这是正确的检查类型,但尚未支持,因为隐式布局需要改变。

行动:表达与周围的列对象的构造选择和使用到变量对象的集合。或建立在强迫每一行的纪录,这恰好是一个元素的集合一行。或者,使用记录的集合。


PLS-00500无效的运营商绑定
原因:一个运营商的绑定功能,不能在指定的范围内发现的。

行动:提供正确的数量和类型的参数,为运营商绑定功能。或者,指定正确的名称为架构,包或类型包含运营商绑定功能。


从函数返回所需的值 PLS-00503的RETURN 语句
原因:在函数体,一个RETURN语句用于包含没有表达。在程序中,包含一个RETURN语句没有表情,因为该语句将控制返回给调用者。然而,在功能,必须包含一个RETURN语句表达,因为它的价值被分配到函数标识符。

行动:添加一个表达式的RETURN语句。


00504类型字符串 _base的PLS - 不得用于包装标准外
原因:数据类型NUMBER_BASE(例如)在一项声明中,被错误地指定。CHAR_BASE的数据类型,DATE_BASE,MLSLABEL_BASE,并NUMBER_BASE仅供内部使用。

行动:(例如)指定的数据类型,而不是NUMBER_BASE。


PLS-00505用户定义的类型可能只被定义为PLSQL的表或记录
原因:试图定义比表或备案的其他类型,但这些都是在此版本的PL / SQL允许唯一用户定义的类型。例如,下面的类型定义是非法的:

Byte类型是整数(2);  - 非法

行动:删除的类型定义,或修改它指定一个表或记录类型。


PLS - 00506用户定义的约束亚型是不允许的
原因:试图定义一个约束亚型,但在此版本的PL / SQL允许只有不受约束的亚型。例如,下面的类型定义是非法的:

亚型的缩写,是VARCHAR2(5);  - 非法

行动:删除非法的类型约束。


PLS-00507 1 PLSQL的表可能不包含复合材料领域的一个表或记录
原因:表中的类型定义,一个嵌套的记录类型被指定为元素类型。这是不允许的。记录中的所有字段必须是标量。

行动:删除表的类型定义,或更换一个简单的记录类型的嵌套的记录类型。


PLS-00508在RETURN语句的表达不能是一个类型
原因:一个数据类型说明符是用来代替在一个用户定义函数的RETURN语句的表达,在下面的例子所示。不要混淆,结果值设置功能标识符,RETURN语句RETURN子句,它指定了数据类型的结果值。

功能的信用评级(ACCT_NO数)返回布尔值是
BEGIN ... 返回的数目;  - 应该是一个表达式
完;

行动:在RETURN语句替换用适当的表达式的数据类型说明符。


PLS-00509实施限制:选择一个字段之前,通过返回的记录到一个临时标识符
原因:非法语法是用来调用函数的参数,返回一个记录或一个PL / SQL表记录。当调用一个函数,参数和返回一个记录,你使用的记录中引用字段的语法如下:

function_name(参数)。FIELD_NAME

但是,您不能使用上面的语法来调用一个无参数的函数,因为PL / SQL不允许空的参数列表。也就是说,下面的语法是非法的:

function_name()FIELD_NAME  - 非法的空参数列表。

空参数列表不能下降,因为下面的语法也是非法的:

function_name.field_name  - 非法;没有参数列表

行动:声明一个本地的纪录或PL / SQL表的记录,你可以指定函数的结果,然后直接引用其字段。


PLS-00510的浮法可以不具有规模
原因:当一个float变量指定宣布,其精度和规模,在下面的例子所示:

的DECLARE
薪金FLOAT(7,2);

然而,规模浮法变量不能被指定,只有一个精确的,可以指定:

工资FLOAT(7);

行动:从声明中删除的规模说明符,或声明,而不是一个NUMBER变量。


PLS-00511的记录可能不包含PL / SQL表的记录
原因:记录中定义的领域之一,作为一个PL / SQL表记录的声明。这是不允许的。一个记录可以是另一个纪录组件(也就是说,记录可以嵌套),但PL / SQL表的记录,不能是创纪录的组件。

行动:删除字段声明,或修改它指定一个简单的记录类型。


实施限制PLS-00512:“ 串 “:不能直接访问远程包变量或游标
原因:试图引用一个远程打包变量或游标。这是不允许的。相反,添加到远程包一个函数,返回值的变量或游标。

行动:删除非法参考。


PLS-00513从SQL调用的PL / SQL函数必须返回合法的SQL类型的值
原因:在一个SQL语句,PL / SQL函数被称为具有返回类型不能由SQL处理。例如,类型BOOLIAN,记录和索引表不支持SQL和返回这些值的功能,不能从SQL调用。

行动:更改返回类型,然后重试操作。


PLS-00514楼盘声明INTO子句的INSERT需要一个类型表
原因:这INSERT语句的INTO子句,这是唯一合法的INTO子句指定的表是一个对象表时提供的楼盘。

行动: INTO子句中删除的楼盘,然后重试操作。


PLS-00515的楼盘到变量的类型必须是字符串 “楼盘表的类型
原因:在INTO子句的INSERT语句与楼盘,数据项的类型必须是楼盘INTO子句中使用的表型。

行动:使用变量或适当类型的列。


PLS-00516对象表和价值之间的类型不匹配字符串 “在INSERT语句。
原因:在INSERT语句操作类型表(表对象),非总价值类型不匹配表的对象类型。

行动:提供一个适当类型的值。


PLS-00517之间的一个选择列表元素'类型不匹配字符串 “和相应的表列在INSERT语句的子查询
原因:在一个子查询的INSERT语句,在租赁选择列表中的元素之一是与INTO子句中的表对应的列类型不兼容。这个错误表示,应重写子查询相匹配的目标表结构。

行动:提供一个兼容的类型的选择列表中的元素。


PLS-00518这个INSERT语句需要含有的值parenthesised名单VALUES子句
原因:没有输入SQL数据括号中的项目清单,VALUES子句。在所有INSERT语句与一个明确的列清单,VALUES子句必须包含SQL数据括号中的项目清单。例如:

插入到my_tab(A,B,C)VALUES(1,2,my_variable);

行动:重写语句,包括SQL数据括号中的项目清单。


PLS-00519这个INSERT语句要求有一个VALUES子句包含一个对象类型的表达,而不是一个值列表
原因:在同类型的表的INSERT语句,聚合时使用的对象类型的项目,预计。

行动:更换对象的构造或其他对象类型的表达式的总和。


PLS-00520地图的方法必须声明不带任何参数(可选)自我以外。
原因:地图成员函数参数的声明。地图成员函数只能有一个参数:默认的自参数。地图的方法必须声明不带任何参数。编译器增加了自我的参数。

行动:删除从地图的成员函数的参数。


1(一)参数(可选)自PLS-00521订购方法必须声明。
原因:一个为了成员函数声明没有用户指定的参数。为了成员函数有两个参数,一个是由编译器添加默认的自参数。第二个参数是由用户添加,必须声明的命令必须包含的对象类型相同类型的方法。

行动:检查和纠正参数指定的方式。


PLS-00522地图的方法必须返回一个标量类型。
原因: MAP成员函数,它返回一个标量类型以外的东西写。

行动:重写功能,例如,它返回一个标量类型的地图。


PLS-00523订购方法必须返回一个整数。
原因:一个为了成员函数被写这样,它返回整数类型以外的东西。

行动:重写订购方法,它返回一个整数类型。


PLS-00524订购方法的参数类型必须包含的对象类型。
原因:一个为了成员函数声明没有用户指定的参数。为了成员函数有两个参数,一个是由编译器添加默认的自参数。第二个参数是由用户添加,必须声明的命令必须包含的对象类型相同类型的方法。

行动:检查和纠正参数指定的方式。


PLS-00525在SQL语句中,只有平等的比较对象是没有地图或命令功能允许。
原因:没有关系比较提供地图或命令功能。只有平等的比较,可使用时,没有提供地图或命令功能。

行动:供应要么为对象的地图或秩序的功能。否则,改变程序只能使用相等比较。


PLS-00526地图或令功能需要在PL / SQL比较对象。
原因:在独立的PL / SQL,有人企图没有地图或命令功能比较对象。

行动:提供地图或秩序的功能,然后重试操作。


PLS-00527地图或秩序的职能,需要一个pragma RESTRICT_REFERENCES指定WNDS,WNPS,RNPS,RNDS。
原因:一个的PRAGMA RESTRICT_REFERENCES未指定或指定它没有以下的WNDS,WNPS,RNPS,或者RNDS。

行动:添加或纠正该pragma,然后重试操作。


PLS-00528订单函数的参数必须在模式
原因:一个参数被宣布为有在输出模式或订单功能。

行动:更正参数模式只使用。


PLS-00529错误列名字串在INSERT语句(必须是一个标识符)
原因:在一个INSERT语句,尝试使用列名,这是不是一个标识符。在任何明确的列列表的INSERT语句中的列名必须是一个简单的标识符。

行动:重写INSERT语句,使用一个简单的标识符列名。


PLS-00530非法的类型用于对象类型的属性:“ 串 “。
原因:尝试使用无效的类型,对象类型属性。

行动:使用对象类型属性只支持类型。

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

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

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

Oracle研究中心

关键词:

PLS-00450

PLS-00530