sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

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

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

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

天萃荷净 PLS-00169修饰符的字符串之前'冲突字符串 “规范
原因:该方法或对象指定的类型修饰符与较早修饰符冲突。例如,一个最终的修饰符不能结合一个不是最后的修饰。

行动:删除冲突的修饰符之一。


PLS-00170在OPEN语句或for循环的SQL语句必须是一条SELECT
原因:一个开放的游标语句或游标用于循环只能调用一个SELECT语句,而不是一个更新,INSERT,或删除。

行动:只可使用的SELECT语句中的OPEN或游标FOR循环。


PLS-00171重复致力于代理子程序表达规范
原因:子程序被发现有两个专门的代理规范。

行动:删除专用剂规格之一。


PLS - 00201标识符字符串必须声明
原因:试图引用一个未声明的变量,异常,程序,或其他项目,或没有被授予特权的项目或只有通过角色授予特权的项目。

行动:

检查您的拼写和声明引用的名称。
验证引用项目的申报,被放置在正确的块结构。
如果所引用的项目确实宣布,但??你没有指该项目的权限,出于安全原因,你会得到通知,该项目没有申报。
如果所引用的项目确实宣布,你认为你有特权,是指该项目,检查的权限,如果只有通过角色授予特权,那么这个预期和记录行为。
存储的对象(包,过程,函数,触发器,视图)中运行的安全域的对象的所有者,除公众没有启用角色。再次,您将只通知该项目没有申报。


PLS - 00202型“ 串 “必须声明
原因:试图引用一个未定义的类型。无论哪种类型说明不声明或参考范围内。

行动:检查拼写和类型说明符的声明。也证实该声明被放置在正确的块结构。


PLS-00203功能的解码必须至少3个非布尔参数调用
原因:少于三个参数被传递到内置函数解码。虽然解码的可变数目的参数(非布尔),至少有三个参数必须通过。

行动:呼叫具有三个或多个参数的解码。


PLS-00204函数或伪列' 串 '可只使用一个SQL语句里面
原因:在程序语句中使用一个虚列或被禁的功能。的SQL伪列(CURRVAL,水平,一次NEXTVAL,ROWID的,的ROWNUM)仅可用于在SQL语句。同样,某些功能,如解码,转储,VSIZE的SQL组函数(AVG,MIN MAX中,COUNT,SUM,STDDEV,方差)可以只用在SQL语句。

行动:删除“伪引用或函数调用的程序语句。或用SELECT INTO语句替换的程序语句,例如,更换:

奖金:=解码(评级,1,5000,2,2500,...);

用下面的语句:

选择的DECODE(评级,1,5000,2,2500,...)从双奖金;


PLS - 00205骨料这里不允许
原因:聚合,也就是说,括号列表的值,如(7788,“SCOTT”,20),被发现在不适当的情况下。

行动:拆除或搬迁的总和。


PLS-00206%的类型必须适用于一个变量,列,字段或属性,不是“ 字符串 “
原因:该方案使用%TYPE数据类型属性声明的对象是没有相应的类。它必须是一个变量,列,记录组件,子程序的正式参数,或其他对象的可分配值。

行动:声明一个适当的类的对象,或以另一种方式(例如,使用%ROWTYPE的)定义的数据类型。


PLS-00207标识的字符串,应用隐式游标的SQL,是不合法的游标属性
原因:这不是一个游标的属性标识符标识符SQL。例如,发生此错误,拼写错误,如果游标属性。

行动:检查游标的属性名称的拼写。确保属性是其中之一:%NOTFOUND,%,%ROWCOUNT的%ISOPEN。


PLS-00208标识符字符串 “不是一个法律的光标属性
原因:未声明的标识符游标属性适用于作为一个游标声明一个标识符。例如,发生此错误,拼写错误,如果游标属性。

行动:检查游标的属性名称的拼写。确保属性是其中之一:%NOTFOUND,%,%ROWCOUNT的%ISOPEN。


PLS-00209表“ 串 “是不是在FROM子句
原因:在查询中,通过选择列表中引用的表在FROM子句中命名。

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


PLS-00210的其它条款需要在这种情况下,语句
原因:除非CASE语句的条文提到选择表达的类型的所有值,其他条款必须提供的CASE语句的最后条款。覆盖整数类型的所有值(或号码),这是不可能的,所以其他子句总是需要时表达了以下关键字案件Integer类型(或号码)。

行动: CASE语句不支持在版本1.x中,2.x,或3.x的任何行动


PLS-00211 case标签或范围内不得重复在不同的条文
原因:在这种情况下,语句,一个值出现在多个WHEN子句。A值可能会出现在一个CASE语句的条款。

行动: CASE语句不支持在版本1.x中,2.x,或3.x的任何行动


PLS-00212无法获得足够的内存来编译CASE语句
原因: CASE语句是太 ??大。编译器没有足够的存储空间来处理它。

行动: CASE语句不支持在版本1.x中,2.x,或3.x的任何行动


PLS-00213包标准无法访问
原因: PL / SQL编译器无法找到当前的Oracle数据库的封装标准。编译的PL / SQL程序,需要封装的标准。

行动:确保封装的标准是在当前的Oracle数据库,然后重试操作。


PLS-00214 BEGIN ... END块嵌套太深
原因:在PL / SQL块的嵌套级别的数量太大。块可以嵌套多达255级深,取决于系统资源,如内存的可用性。

行动:块结构重组,以避免嵌套太深水平。例如,移动到一个更高水平的最低级别的子块。


PLS-00215字符串长度的限制,必须在范围(1 .. 32767)
原因:当被宣布为一个字符变量,指定的长度超出法律范围。例如,下面的声明是非法的:

标志的CHAR(0);  - 非法的;长度为零
名称VARCHAR2(-10);  - 非法的;负的长度

行动:改变长度约束,确保它位于范围为1 .. 32767。


PLS-00216数的精度约束必须是在范围(1 .. 38)
原因:一个NUMBER变量的声明是超出法律范围的精密。如N号(800)或N号(123,10)的声明是不支持。

行动:更改违法数的精度约束,确保它位于范围为1 .. 38。


PLS-00217人数规模约束,必须在范围内(-84 .. 127)
原因:一个NUMBER变量声明是超出法律范围的规模。如N号(10345)或N号(10,-100)的声明是不支持。

行动:更改非法编号的规模约束,确保它在范围-84在于...... 127。


PLS-00218的变量声明为NOT NULL,必须有一个初始化赋值
原因:在一般情况下,有没有在其声明中初始化子句的变量自动初始化为NULL。这是不合逻辑;为NOT NULL的变量,因此,需要一个初始化子句。

行动:初始化子句添加到变量声明。如果初始化过于复杂的语法,可以添加一个函数调用(在以后的版本)。


PLS-00219标签的字符串参考范围
原因:块或循环标签被用来限定一个变量(如在outer_block.date),不声明或没有标签的范围内。可能拼写错误的变量名,其声明可能是错误的,或申报可能被放置在错误的块结构。

行动:检查拼写和声明变量的名称。也证实该声明被放置在正确的块结构。


PLS-00220简单的名称需要在这方面
原因:一个合格的名称,如AB或ABC在这里是不允许的。

行动:一个简单的名称,而不是使用诸如。


PLS - 00221' 串 '是不是一个过程,或者是不确定的
原因:被引用的标识符作为一个过程,不声明或实际上代表了另一种对象(例如,它可能已被作为一个函数声明)。

行动:检查拼写和声明的标识符。也证实该声明被放置在正确的块结构。


PLS-00222没有字符串 “ 名称“的功能存在,在此范围内
原因:一个标识符被引用作为函数不声明或实际上代表了另一种对象(例如,它可能已被宣布为一个过程)。

行动:检查拼写和声明的标识符。也证实该声明被放置在正确的块结构。


PLS-00223 paramaterless程序“的字符串作为函数
原因:作为一个参数的函数被引用的标识符实际上代表一个过程。

行动:检查拼写和声明的标识符。也证实该声明被放置在正确的块结构。如有必要,更改标识符的声明或更改的引用,以便它不需要返回值。


PLS-00224对象的字符串必须要使用这样的函数或数组类型
原因:作为一个函数或数组引用的标识符实际上代表一个对象(例如,一个数字或日期),不能以这种方式引用。

行动:检查拼写和声明的标识符。也证实该声明被放置在正确的块结构。


PLS-00225的子程序或游标' 字符串 '引用超出范围
原因:子程序或游标,不声明或不在范围内的子程序或游标变量引用。可能拼写错误的变量名,其声明可能是错误的,或申报可能被放置在错误的块结构。

行动:检查拼写和声明变量的名称。也证实该声明被放置在正确的块结构。


PLS-00226包“的字符串作为变量引用
原因:在表达式中引用包,如果它是一个变量或函数。无论是变量或函数的名称拼写错误或不完全合格的参考。例如,调用函数引用my_function,这是存储在包my_package,点符号必须使用如下:

... my_package.my_function ...

行动:更正拼写的变量或函数的名称或使用点符号引用打包的变量或函数。


PLS-00227'中'正式子程序字符串尚未denotable的
原因:当被宣布为一个子程序的正式参数,一个参数是用来初始化另一个在:

:程序MY_PROC(J数字,K数:= J)是...

第一个参数,直到运行时有没有价值,所以它不能被用来初始化另一个参数。

行动:删除非法的正式参数参考。


PLS-00228非法long类型的变量声明
原因:试图声明一个变量的类型长。仅列可以是long类型。

行动:删除违规的变量定义。


PLS-00229在SQL表达式属性表达式
原因:一个属性表达式,如SQL%NOTFOUND,在SQL语句中使用,但只允许在程序报表属性表达式。

行动:要解决这个限制,分配的属性表达式的值给一个变量,然后使用SQL语句中的变量。例如,更换的声明:

INSERT INTO审计值(C1%ROWCOUNT的,...);

下面的语句:

的ROW_COUNT:= C1%ROWCOUNT的;
INSERT INTO审计值(ROW_COUNT,...);


PLS-00230 OUT和IN OUT模式的形式参数不能有默认的表达式
原因:当一个程序被宣布正式参数,OUT或IN OUT参数被初始化为默认值,如:

程序calc_bonus(奖金出真正的:= 00000,...)...

然而,只有IN参数可初始化为默认值。

行动:删除非法的默认表达。


PLS-00231功能“ 字符串 “,不得使用在SQL
原因:在SQL语句中使用被禁的功能。SQLCODE和SQLERRM如某些功能仅可用于在程序语句。

行动:删除从SQL语句的函数调用。或者更换一个局部变量的函数调用。例如,下面的语句是非法的:

INSERT到错误值(SQLCODE的,的SQLERRM);

但是,您可以指定SQLCODE和SQLERRM局部变量的值,然后使用SQL语句中的变量,如下:

err_num:= SQLCODE的;
err_msg:=的SQLERRM;
INSERT到错误值(err_num,err_msg);


PLS-00232嵌套包不允许
原因: A包被宣布在另一个包,但只允许在顶层包声明。换句话说,不能嵌套包。

行动:将封闭的包以外的包声明。


PLS-00233函数名作为一个异常名称时条款
原因: WHEN子句中的异常处理程序包含一个函数调用,而不是一个例外的名称。一个有效的异常处理程序,由一个WHEN子句,必须指定一个异常,随后,将引发异常时要执行的语句序列。

行动:在WHEN子句的标识符的拼写检查,然后替换函数调用与异常的名称。


PLS-00234参数样式SQL,不得指定与PARAMATERS名单
原因:一个子程序不能指定两个参数样式SQL和一个明确的参数列表。使用参数学风提供默认参数列表类型。

行动:更改子程序规范。


PLS-00235外部类型是不恰当的参数
原因:一个不成功的尝试,转换参数指定的外部参数类型。

行动:指定一个不同的外部类型或参数类型。


PLS - 00236无效的外部类型规范字符串。
原因:指定的外部类型是下列之一的有效指标,长度,MAXLEN,TDO的,持续时间,CHARSETID,或CHARSETFORM。

行动:检查的PL / SQL用户指南和参考,并指定一个适当的外部类型。


PLS-00237价值指标或长度规范无效
原因:指标或正在通过OUT或IN OUT模式的长度参数指定值。只有在模式参数,可通过值传递。

行动:按值规范删除或更改模式。


PLS-00238外部参数名字符串没有找到正式的参数列表
原因:指定外部的参数名不匹配,一个在正式的参数列表。

动作:纠正外部的参数名。


PLS-00239无效的SQLCODE的外部类型规范
原因:不适当的外部参数类型的SQLCODE参数指定。

行动:更正SQLCODE的参数规范。


PLS-00240回报指标,TDO,持续时间长,无效的型号规格
原因:不适当的外部参数类型被指定返回指标,长度,TDO的,或持续时间。

行动:更正返回参数的规范。


PLS-00241无效的,为的SQLSTATE外部类型规范
原因:不适当的外部参数类型被指定为SQLSTATE参数。

行动:更正的SQLSTATE参数规格。


PLS-00242上下文无效外部类型规范
原因:不适当的外部参数类型的上下文参数指定。

行动:更正上下文参数规范。


PLS-00243无效的SQLNAME外部类型规范
原因:不适当的外部参数类型为SQLNAME参数指定。

行动:更正SQLNAME参数规范。


PLS-00244多次声明外部函数的正式参数列表
原因:有至少一个下列正规,指示灯,长度,MAXLENGTH,或上下文的多个声明。PARAMETERS子句中的每个形式参数的PL / SQL允许上述声明。

动作:纠正参数条文。


PLS-00245“参数”条款中的形参必须出现一次
原因:有多个参数子句中的形式参数的声明。PL / SQL中只允许一个声明正式参数PARAMETERS子句。

动作:纠正参数条文。


PLS-00246参数风格是不受支持
原因:参数样式条款被放置在外部子程序体。

行动:删除参数样式的条款。


PLS - 00247库名称必须指定
原因:从外部子程序身体中缺少库名称。

行动:指定在外部子程序体库的名称。


PLS-00248无效的库语法
原因:库的语法输入错误。

行动:更正库的语法,并重新编译。


PLS-00249与上下文语法无效
原因:背景是在使用与上下文或一个参数子句。这是无效的。

行动:检查与上下文没有指定PARAMETERS子句或反之亦然上下文使用。参数子句必须是完整的。因此,如果指定上下文,上下文必须被引用参数子句(如果有)。


PLS-00250的不正确使用字符串参数子句。
原因:使用的关键词,如MAXLEN,长度,CHARSETID,CHARSETFORM参数子句中的回报是不正确的

行动:这个错误发生,如果像MAXLEN,长度,TDO的,持续时间,CHARSETID,或CHARSETFORM关键字不能用于形式参数的PL / SQL或正式参数的模式。例如,MAXLEN只能被宣布为一个CHAR或VARCHAR2 PL / SQL变量,它的使用只允许用于OUT或INOUT PL / SQL变量。此外,回报是一个PL / SQL过程参数子句中指定。例如:

的CREATE PROCEDURE PROC是外部名称... 库... 参数(RETURN
指标短,退货);


PLS-00251回车,函数返回实际的,必须是最后的参数条款
原因:返回参数子句内使用,函数返回实际的规范,必须持有最后的位置。例如:下面会给这个错误,因为功能参数子句中的实际收益回报的规格是不是最后的。

,功能myexternalfunc(VAR1 BINARY_INTEGER的,
VAR2 BINARY_INTEGER的)
返回BINARY_INTEGER的是外部
名称“myexternalfunc”
图书馆somelib
参数(VAR1龙,var2的短,
返回诠释,Return指标短);

正确的语法如下。需要注意的是实际的函数返回的回报是参数子句中最后的规范。

,功能myexternalfunc(VAR1 BINARY_INTEGER的,
VAR2 BINARY_INTEGER的)
返回BINARY_INTEGER的是外部
名称“myexternalfunc”
图书馆somelib
参数(VAR1龙,var2的短,
返回指标短,返回int);

行动:更正参数子句返回规范的语法。


PLS-00252参考包装标准的错误副本
原因:当数据库是开放的,或者关闭数据库时磁盘上的版本,一个提到了固定的标准软件包的版本。一个SYS.X元包的名称,明确的使用可以导致这种。有人可能会从编译开始,而在数据库关闭,但运气不好,有另一个会话打开数据库,编译完成之前也看到这一点。另一个可能的原因是通过SVRMGRL中SERVEROUTPUT ON时,做的ALTER DATABASE关闭。

行动:利用包时,该数据库是开放式和固定(预装)版本的数据库被关闭时,磁盘上的版本。不要尝试使用错误的设置。它应该是引用错了一套相当困难,除明确使用SYS.X元包名。此外,请务必设置之前做一个ALTER DATABASE关闭SERVEROUTPUT关。


PLS-00253正式的参数字符串参数子句中失踪
原因:参数子句没有一个正式的参数列表中指定的参数匹配的参数。

行动:在每个形式参数的参数条款提供一个匹配的参数。


PLS-00254输出和输入/输出模式不能在这种情况下使用
原因:实际参数模式(,或是在输入/输出)是不正确使用USING子句。对于使用OPEN语句中的条款,只有在模式是允许的。

行动:在USING子句中的参数模式更改到一个适当的模式。


PLS-00255呼叫规格参数不能有默认值
原因:调用规范的正式参数的默认值是不允许的。

行动:在正式的参数列表(规范或身体)删除默认值,并重新编译。


PLS-00256 字符串是不是一个有效的外部库
原因:提供的外部子句中的外部库的名称是不是有效的别名库。

行动:提供一个有效的别名库,先前已宣布的名称。


PLS-00257非法使用EXTERNAL子句中的类型或包装规格
原因:外部条款是在型号规格或包装规格检测。

行动:删除外部子句,并使用新的调用规范语法。


PLS-00258约束数据类型不允许在呼叫规格
原因:一个C或Java调用规范,不能在PL / SQL的形参类型的限制。有约束的PL / SQL类型是自然的,NATURALN,积极,POSITIVEN,SIGNTYPE,整数,诚信,的SMALLINT,十进制数字,DEC的。这包括NOT NULL约束从POSITIVEN,NATURALN。

行动:使用约束的类型,PL / SQL的正式声明,数量,BINARY_INTEGER的或PLS_INTEGER


PLS-00259权利模型(authid的),必须指定
原因:它是强制性的,到指定的权限模型,如果一个PL / SQL过程,函数,包或类型有呼叫规格。

行动:新增AUTHID子句说明的权利模型。


PLS-00260 DATETIME /间隔的限制,必须在范围内(0 .. 9)
原因:一个DateTime /区间的变量或属性被宣布超出法律范围的约束。

行动:改变的非法约束。


PLS-00261 Java调用规范尚未获准作为一种方法,在对象类型
原因:已发现一个对象的方法或不透明的类型调用规范申报的实施是在Java。尚不支持这种用法。

行动:实现使用其他语言比Java的方法。PL / SQL方法实现允许调用的Java架构级程序或包提供了一个调用规范;这样的调用规范可以只针对一个静态Java方法,但是。


PLS - 00302组件的字符串 '必须声明
原因:在一个组件的引用(例如,名称中的“AB”,“B”是一个“A”的组成部分),该组件尚未宣布。可能拼错的组件,它的声明可能是错误的,或申报可能被放置在错误的块结构。

行动:检查拼写和组件的声明。也证实该声明被放置在正确的块结构。


PLS - 00303限定符“ 串 “必须声明
原因:在一个名称,如“AB公司”,“A”是限定词,和“B”是预选赛的组成部分。发生此错误被发现时没有限定符声明。限定符可能拼写错误,它的声明可能是错误的,或申报可能被放置在错误的块结构。

行动:检查拼写和限定符声明。也证实该声明被放置在正确的块结构。


PLS-00304不能编译字符串 “身体不规范“
原因:无法找到编译需要编译包体的包规范。一些可能的原因如下:

包的名称拼写错误
从未被编译包装规格
编译的包装规格是无法访问
编译包体之前,必须编制包规范,编译器必须能够访问的编制规范。

行动:检查包的名称的拼写。编译之前,编译包体的包规范。此外,确保编译器编译规范的访问。


PLS - 00305以前使用的“ 字符串 “(行字符串)使用这个冲突
原因:尽管事先声明的一个游标,程序,函数,或包,编译器发现在同一范围内的名称相同的另一个对象。或包中的规范和身体的子程序头不匹配为一个字一个字。

行动:检查拼写光标,过程,函数,或包的名称。同时检查所有的常量,变量,参数,并在同一范围内宣布的异常的名称。然后,删除或重命名的对象有重复的名称。或者,改变包装子程序的头,让他们一字不匹配。


PLS-00306错误的号码或呼叫“ 字符串类型的参数“
原因:出现此错误命名的子程序调用时,不能以任何声明,子程序名称相匹配。一个参数的子程序名称可能拼写错误,可能有错误的数据类型,声明可能是错误的,或者可能被放置在错误的块结构的声明。例如,发生此错误如果内置的平方根函数SQRT是一个拼写错误的名称或一个错误的数据类型的参数调用。

动作:检查拼写和子程序名称的声明。也证实,它的调用是正确的,它的参数是正确的数据类型,如果它不是一个内置的功能,其声明被放置在正确的块结构。


PLS-00307太多申报的“ 串 “匹配这个调用
原因:子程序或游标名称的声明是不明确的,因为没有任何的声明和调用匹配的调用参数的数据类型的隐式转换时使用的多个声明之间的精确匹配。子程序或游标的名称可能拼写错误,它的声明可能是错误的,或者可能被放置在错误的块结构的声明。

行动:检查拼写和声明的子程序或游标的名称。也证实,它的调用是正确的,它的参数是正确的数据类型,如果它是一个内置的功能,它的声明被放置在正确的块结构。


PLS-00308这个结构是不允许转让的起源
原因:结构或表达不指定一个可以分配给一个变量的值。例如,数据类型的名称编号,不能出现在X赋值语句:=号的右边。

动作:纠正违法的赋值语句。


PLS-00309%,最后一个属性,' 字符串 '必须是一个枚举类型的变量
原因: “%”的属性,必须适用于已被宣布为一个枚举类型的变量(或一个枚举类型的亚型)的标识符。此错误发生时,“%”如下一些尚未宣布的标识符。

行动:确保%,去年如下枚举类型(或一个枚举类型的亚型)。


PLS-00310,' 字符串 ' %ROWTYPE属性必须命名表,游标或游标变量
原因:%ROWTYPE属性必须应用到一个标识符声明一个游标,游标变量,或数据库表。%ROWTYPE的如下一些尚未宣布的标识符时发生此错误。

行动:变更申报或不适用%ROWTYPE属性标识符。


PLS-00311“ 串 “的声明是不完整或畸形
原因:发生这个标识符不能被编译,因为它的类型尚未正确定义。

动作:纠正错误的数据类型声明。


PLS-00312位置参数协会可能不遵循命名的协会
原因:当一个参数列表传递给子程序或游标,如果使用位置和命名协会,所有的位置协会必须放置在其宣布的订单之前,所有命名的协会,它可以是任何顺序。

行动:重新排列参数列表,以满足要求,或只使用命名关联。


PLS-00313“ 字符串 “,在此范围内宣布
原因:有没有申报的职权范围内的标识符。可能拼错的标识符,它的声明可能是错误的,或申报可能被放置在错误的块结构。

行动:检查拼写和声明的标识符。也证实该声明被放置在正确的块结构。


PLS-00314表声明不得作为PL / SQL局部变量
原因:在预编译的程序,申报TABLE语句被误用于嵌入PL / SQL块内。如果一个嵌入式PL / SQL块是指一个数据库表尚不存在,使用的DECLARE TABLE语句来告诉预编译器表看起来像什么。不过,声明只允许在宿主程序中TABLE语句。

行动:将嵌入式PL / SQL块外声明TABLE语句。如果你想要一个变量,可以选择从数据库表或游标或游标变量获取的数据存储的整个行,请使用%ROWTYPE属性。




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

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

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

Oracle研究中心

关键词:

PLS-00170

PLS-00314