---
title: "PLS-00000 ~ PLS-00999 | OceanBase 文档中心"
description: "PLS-00000 ~ PLS-00999 PLS-00109：unknown exception name &#x27;%.*s&#x27; in PRAGMA EXCEPTION_INIT OceanBase 错误码：9583 SQLSTATE：HY000 错误原因：在编译指示的范围内没有找到在 EXCEPTION_INIT 编译指…"
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 3.2.3 企业版 LTS

# PLS-00000 ~ PLS-00999

更新时间：2023-07-18 17:25:58

## PLS-00109：unknown exception name '%.*s' in PRAGMA EXCEPTION_INIT

- OceanBase 错误码：9583
 - SQLSTATE：HY000
 - 错误原因：在编译指示的范围内没有找到在 `EXCEPTION_INIT` 编译指示中引用的异常名称的声明。
 - 解决方式：确保 `pragma` 遵循异常声明并且在同一范围内。

## PLS-00114：identifier ' %.*s' too long

- OceanBase 错误码：9526
 - SQLSTATE：HY000
 - 错误原因：PL 变量的名称超过 128 个字符。 合法标识符（包括带引号的标识符）的最大长度为 128 个字符。可能是由于字符串文字可能被错误地用双引号而不是单引号引起来，在这种情况下，PL 将其视为带引号的标识符。
 - 解决方法：缩短标识符。

## PLS-00119：Duplicate having-clause in table expression

- OceanBase 错误码：9501
 - SQLSTATE：HY000
 - 错误原因：在 `SELECT` 语句中找到两个或多个 `HAVING` 子句。
 - 解决方法：删除一个 `HAVING` 子句，并在必要时通过 `AND` 或 `OR` 连接逻辑表达式。

## PLS-00124：name of exception expected for first arg in exception_init pragma

- OceanBase 错误码：9674
 - SQLSTATE：HY000
 - 错误原因：传递给 EXCEPTION_INIT pragma 的第一个参数不是异常名称。第一个参数必须是合法声明的异常名称。
 - 解决方法：用合法声明的异常名称替换第一个参数。

## PLS-00128：Illegal number of arguments for pragma EXCEPTION_INIT

- OceanBase 错误码：9675
 - SQLSTATE：HY000
 - 错误原因：传递给命名 pragma 编译器指令的实际参数数量不正确。参数列表中省略了必需的参数，或者 pragma 语法有错误（例如：两个参数之间可能缺少逗号）。
 - 解决方法：提供缺少的参数，或更正错误的语法。

## PLS-00154：An object type may have only 1 MAP or 1 ORDER method

- OceanBase 错误码：9523
 - SQLSTATE：HY000
 - 错误原因：声明了多个 `MAP` 或 `ORDER` 函数。 一个对象类型只能具有一个 `MAP` 函数或 `ORDER` 函数，不能有多个 `MAP` 函数，也不能有多个 `ORDER` 函数，并且不能同时具有两者。

## PLS-00155：Only a function may be a MAP, ORDER or CONSTRUCTOR method

- OceanBase 错误码：9525
 - SQLSTATE：HY000
 - 错误原因：过程被声明为 `MAP` 、`ORDER` 或 `CONSTRUCTOR` 方法。仅函数可以是 `MAP` 、`ORDER` 或 `CONSTRUCTOR` 方法。

## PLS-00157：Only schema-level programs allow %s

- OceanBase 错误码：9506
 - SQLSTATE：HY000
 - 错误原因：为程序包或类型指定了 `AUTHID` 或 `DEFAULT COLLATION` 子句。 仅模式级别存储过程、程序包和类型才支持这些子句。
 - 解决方法：删除子句。

## PLS-00179：$ERROR: %.*s

- OceanBase 错误码：9540
 - SQLSTATE：HY000
 - 错误原因：使用了 `$ERROR` 指令。

## PLS-00201: identifier '%.*s' must be declared

- OceanBase 错误码：5543，5546
 - SQLSTATE：42000
 - 错误原因：

     - 引用未声明的变量、异常程序、过程。
     - 引用未授予权限的类型。
     - 引用仅通过角色授予权限的类型。
     - 存储的对象（程序包、过程、函数、触发器、视图）在对象所有者的安全域中运行，除了 `PUBLIC` 之外，没有启用任何角色。
 - 解决方法：

     - 检查您的引用名称的拼写和声明。
     - 验证所引用项的声明是否正确放置在块结构中。
     - 如果确实声明了所引用的项目，并且您认为自己有权引用该项目，请检查权限。

## PLS-00204：function or pseudo-column '%s' may be used inside a SQL statement only

- OceanBase 错误码：9682
 - SQLSTATE：HY000
 - 错误原因：程序语句中使用了伪列或禁止的函数。SQL 伪列（ LEVEL、ROWID、ROWNUM ）只能在 SQL 中使用声明。类似地，某些函数（如：DECODE、DUMP 和 VSIZE ）和 SQL 组函数（平均值、最小值、最大值、计数、总和、STDEV、方差）可以仅在 SQL 语句中使用。
 - 解决方法：从程序中删除伪列引用或函数调用陈述。或者，将程序语句替换为 SELECT INTO 语句。例如，用 `SELECT DECODE(rating, 1, 5000, 2, 2500, ...) INTO bonus FROM dual;` 描述替换 `bonus := DECODE(rating, 1, 5000, 2, 2500, ...);` 。

## PLS-00206：%%TYPE must be applied to a variable, column, field or attribute, not to '%.*s'

- OceanBase 错误码：9547
 - SQLSTATE：HY000
 - 错误原因：使用 `％TYPE` 数据类型属性声明的程序对象不是合适的类型，该类型必须是变量、列、记录组属性，子程序形式参数或其它可以赋值的对象。
 - 解决方法：在变量声明中添加一个初始化子句。 如果初始化的语法过于复杂，则可以添加一个函数调用。

## PLS-00218：a variable declared NOT NULL must have an initialization assignment

- OceanBase 错误码：9514
 - SQLSTATE：HY000
 - 错误原因：通常，声明中没有初始化子句的变量会自动初始化为 `NULL`。 这对于 `NOT NULL` 变量是不合逻辑的。 因此，需要一个初始化子句。
 - 解决方法：在变量声明中添加一个初始化子句。 如果初始化的语法过于复杂，则可以添加一个函数调用。

## PLS-00254：OUT and IN/OUT modes cannot be used in this context

- OceanBase 错误码：9502
 - SQLSTATE：HY000
 - 错误原因：`USING` 子句未正确使用实际参数模式（`OUT` 或 `IN/OUT` ）。 对于 `OPEN` 语句中的 `USING` 子句，仅允许 `IN` 模式。
 - 解决方法：将 `USING` 子句中的参数模式更改为正确的模式。

## PLS-00304：cannot compile body of '%.*s' without its specification

- OceanBase 错误码：9520
 - SQLSTATE：HY000
 - 错误原因：找不到编译程序包主体所需的编译程序包规范。可能原因如下：

     - 软件包名称拼写错误。
     - 从未编译过软件包规范。
     - 无法访问已编译的程序包规范。软件包规范必须在编译软件包主体之前进行编译，并且编译器必须有权访问已编译的规范。
 - 解决方法：

     - 检查软件包名称的拼写。
     - 在编译程序包主体之前，请先编译程序包规范。
     - 请确保编译器可以访问已编译的规范。

## PLS-00305：previous use of '%.*s' conflicts with this use

- OceanBase 错误码：9529
 - SQLSTATE：HY000
 - 错误原因：在查找游标、过程、函数或程序包的预声明时，编译器在同一作用域中找到了另一个具有相同名称的对象。 或者，程序包子程序的头部中的名称和主体中的名称不匹配。
 - 解决方法：

     1. 检查游标、过程、函数的拼写及程序包名称。
     2. 检查在同一作用域中声明的所有常量、变量、参数和异常的名称。
     3. 删除或重命名具有重复名称的对象。
     4. 修改子程序头部中的名称，使其与程序主体中的名称相匹配。

## PLS-00306：wrong number or types of arguments in call to '%.*s'

- OceanBase 错误码：9542
 - SQLSTATE：HY000
 - 错误原因：当子程序的调用无法与该子程序名称的任何声明匹配时，将会报此错误码。有以下几种情况：

     - 子程序名称可能拼写错误。
     - 参数可能具有错误的数据类型。
     - 声明可能有误或声明可能被错误地放置在块结构中。 例如，以拼写错误的名称或者数据类型错误的参数调用内置的平方根函数 `SQRT` 。
 - 解决方式：

     - 检查子程序名称的拼写和声明。
     - 确认它的调用是正确的。
     - 确认参数是正确的数据类型。
     - 如果不是内置的函数，则将声明正确放置在块结构中。

## PLS-00307：too many declarations of '%.*s' match this call

- OceanBase 错误码：9544
 - SQLSTATE：HY000
 - 错误原因：子程序或游标名称的声明是模棱两可的，因为在使用参数数据类型的隐式转换时，声明和调用之间没有完全匹配，并且有多个声明与调用匹配。可能存在以下原因：

     - 子程序或游标名称可能拼写错误。
     - 声明可能有误。
     - 声明可能未正确地放置在块结构中。
 - 解决方式：

     - 检查子程序或游标名的拼写和声明。
     - 确认调用正确。
     - 确认参数具有正确的数据类型。
     - 如果不是内置函数，则将声明正确放置在块结构中。

## PLS-00318：type '%.*s' is malformed because it is a non-REF mutually recursive type

- OceanBase 错误码：9539
 - SQLSTATE：HY000
 - 错误原因：类型声明的格式错误，因为申明中包含了相互递归的非 REF 关系。可能为以下情况：

     - 包含递归自引用
     - 包含相互递归引用
 - 解决方式：在声明中使用其他类型避免递归。

## PLS-00320：the declaration of the type of this expression is incomplete or malformed

- OceanBase 错误码：9597
 - SQLSTATE：HY000
 - 错误原因：在声明中，变量或游标的名称拼写错误，或者声明中包含前向引用。PL/SQL 中不允许前向引用。变量或游标必须先声明，然后才能在其他语句（包括其他声明性语句）中引用。例如：`dept_rec` 的声明会引发此异常，因为它引用了尚未声明的游标 `dept_cur`。示例如下：

  ```unknow
  DECLARE dept_rec dept_cur%ROWTYPE;
  CURSOR dept_cur IS SELECT ...

  ```
 - 解决方法：检查声明中所有标识符的拼写。如有必要，移动声明的位置，消除前向引用。

## PLS-00321：expression '%.*s' is inappropriate as the left hand side of anassignment statement

- OceanBase 错误码：9513
 - SQLSTATE：HY000
 - 错误原因：该表达式不能出现在赋值语句的左侧。 例如，函数 `SYSDATE` 不能出现在赋值语句的左侧，例如 `SYSDATE：= '01 -JAN-1990';`。
 - 解决方法：修改不正确的赋值语句。

## PLS-00322：Constant declarations should contain initialization assignments

- OceanBase 错误码：9515
 - SQLSTATE：HY000
 - 错误原因：常量声明缺少初始值。
 - 解决方法：更正常量声明。

## PLS-00323：subprogram or cursor '%.*s' is declared in a package specification and must be defined in the package body

- OceanBase 错误码：9585
 - SQLSTATE：HY000
 - 错误原因：在包头中声明的游标或者子过程，必须在包体中定义。
 - 解决方法：检查子程序名称的拼写。如有必要，添加缺少的子程序体到包体。

## PLS-00325：non-integral numeric literal %.*s is inappropriate in this context

- OceanBase 错误码：9670
 - SQLSTATE：HY000
 - 错误原因：在需要整数的上下文中使用了非整数数字文本。
 - 解决方法：用整数文本替换不合适的文本。

## PLS-00363：expression '%.*s' cannot be used as an assignment

- OceanBase 错误码：9550
 - SQLSTATE：HY000
 - 错误原因：在语句中，错误的使用了文字、常量、`IN` 参数、LOOP 中的 `counter` 变量或函数调用。
 - 解决方法：更改语句表达式。

## PLS-00366：subtype of a not null type must also be not null

- OceanBase 错误码：9684
 - SQLSTATE：HY000
 - 错误原因：子类型定义为 `NOT NULL` 后，不允许它被用作另一个定义为 `NULL` 的子类型的基类型。例如：`DECLARE SUBTYPE Weekday IS INTEGER NOT NULL; SUBTYPE Weekend IS Weekday;` 。
 - 解决方法：修改子类型定义以消除冲突。

## PLS-00371：at most one declaration for '%.*s' is permitted

- OceanBase 错误码：9507
 - SQLSTATE：HY000
 - 错误原因：对变量的引用是模糊的，因为该变量有多个声明。 在块、过程或函数的声明部分，最多允许一个具有给定标识符的局部变量。 给定的变量最多可以出现在一个块中。
 - 解决方法：检查变量的拼写。 如有必要，请删除变量的所有声明，仅保留一个声明。

## PLS-00372：In a procedure, RETURN statement cannot contain an expression

- OceanBase 错误码：5583
 - SQLSTATE：42000
 - 错误原因：在过程中，`RETURN` 语句包含不允许包含表达式。
 - 解决方法：从 `RETURN` 语句中删除表达式，或将过程重新定义为函数。

## PLS-00373：EXIT/CONTINUE label '%.*s' must label a LOOP statement

- OceanBase 错误码：9512
 - SQLSTATE：HY000
 - 错误原因：`EXIT` 或 `CONTINUE` 语句中的标签未引用 `LOOP` 语句。`EXIT` 或 `CONTINUE` 语句无需指定标签，如果指定了标签（如 `EXIT my_label` 或 `CONTINUE my_label` 中的标签），则标签必须引用 `LOOP` 语句。
 - 解决方法：确保标签名称的拼写正确，并且引用了 `LOOP` 语句。

## PLS-00375：illegal GOTO statement; this GOTO cannot branch to label '%.*s'

- OceanBase 错误码：9505
 - SQLSTATE：HY000
 - 错误原因：`GOTO` 语句的分支是从包含语句序列的结构体（例如，循环或异常处理程序）外部到语句序列内的标签。这样的分支是不允许的。
 - 解决方式：将 `GOTO` 语句移到语句序列内或将带标签的语句移到语句序列外。

## PLS-00376：illegal EXIT/CONTINUE statement; it must appear inside a loop

- OceanBase 错误码：9510
 - SQLSTATE：HY000
 - 错误原因：在循环结构体之外找到了 `EXIT` 或 `CONTINUE` 语句。 `EXIT` 语句从循环中过早退出，而 `CONTINUE` 语句用于开始循环的下一个迭代。 这两个语句必须始终出现在循环中。
 - 解决方法：删除 `EXIT` 或 `CONTINUE` 语句，或将其放入循环结构体中。

## PLS-00382：expression is of wrong type

- OceanBase 错误码：9519
 - SQLSTATE：HY000
 - 错误原因：表达式具有错误的数据类型。
 - 解决方法：更改表达式的数据类型。 您可能要使用数据类型转换功能。

## PLS-00403：expression '%.*s' cannot be used as an INTO-target of a SELECT/FETCH statement

- OceanBase 错误码：9665
 - SQLSTATE：HY000
 - 错误原因：`FETCH` 语句无法为赋值目标赋值它的 `INTO` 列表，因为目标不是合法形成和声明的变量。例如：以下赋值是非法的，因为 `'Jones'` 是一个字符串，而不是一个变量：`FETCH my_cur INTO 'Jones'`。
 - 解决方法：检查分配目标的拼写和声明。确保遵循形成变量名称的规则。

## PLS-00410：duplicate fields in RECORD,TABLE or argument list are not permitted

- OceanBase 错误码：9508
 - SQLSTATE：HY000
 - 错误原因：声明用户定义的记录时，两个字段具有相同的名称。与数据库表中的列名一样，用户定义的字段名必须唯一。
 - 解决方法：检查字段名称的拼写，然后删除重复的名称。

## PLS-00438：value in LIMIT clause: \'%.*s\' use is invalid

- OceanBase 错误码：9518
 - SQLSTATE：HY000
 - 错误原因：`FETCH INTO` 后的 `LIMIT` 子句的数值类型不对。例如下面的语句是非法的，因为 `LIMIT` 子句需要一个数字值。`FETCH c1 BULK COLLECT INTO var_tab LIMIT 'aaaaa';`。
 - 解决方法：修改 `LIMIT` 子句的表达式使其后面是个数字值。如 `FETCH c1 BULK COLLECT INTO var_tab LIMIT '22333';`。

## PLS-00485：in exception handler, '%.*s' must be an exception name

- OceanBase 错误码：5545
 - SQLSTATE：42000
 - 错误原因：未声明为异常的标识符出现在异常处理程序 `WHEN` 子句中。`WHEN` 子句中只有异常的名称有效。
 - 解决方式：检查异常名称的拼写，确保正确声明了该异常。

## PLS-00488：'%.*s' must be a type

- OceanBase 错误码：9543
 - SQLSTATE：HY000
 - 错误原因：声明或表达式中的数据类型说明符未指定合法的类型。可能存在以下情况：

     - 可能未将 `％TYPE` 属性添加到声明中。如 `DECLARE my_sal emp.sal％TYPE;my_ename emp.ename;` ，未申明 `％TYPE`。
     - 在声明常量或变量时，要自动提供列的数据类型，可使用 `％TYPE` 属性。
     - 在声明记录时，要自动提供行的数据类型，可使用 `％ROWTYPE` 属性。
 - 解决方式：确保数据类型说明符指定合法的类型。必要时请使用 `％TYPE` 和 `％ROWTYPE` 属性。

## PLS-00520：MAP methods must be declared without any parameters other than (optional) SELF

- OceanBase 错误码：9532
 - SQLSTATE：HY000
 - 错误原因：声明了 `MAP` 成员函数的参数。 `MAP` 成员函数只能具有一个参数：默认的 `SELF` 参数。 `MAP` 函数不可以申明为任何参数，由编译器添加 `SELF` 参数。
 - 解决方法：删除 `MAP` 函数中的参数。

## PLS-00521：ORDER methods must be declared with 1 (one) parameter in addition to (optional) SELF

- OceanBase 错误码：9538
 - SQLSTATE：HY000
 - 错误原因：声明了没有用户指定参数的 `ORDER` 函数。`ORDER` 函数具有两个参数，一个是由编译器添加的默认 `SELF` 参数。 第二个参数由用户添加，并且必须与包含的对象类型相同。
 - 解决方法：修改参数类型。

## PLS-00522：MAP methods must return a scalar type

- OceanBase 错误码：9531
 - SQLSTATE：HY000
 - 错误原因：编写 `MAP` 成员函数时，返回的不是标量类型。
 - 解决方法：重写 `MAP` 函数，使其返回标量类型。

## PLS-00523：ORDER methods must return an INTEGER

- OceanBase 错误码：9533
 - SQLSTATE：HY000
 - 错误原因：`ORDER` 函数返回了除整数类型以外的类型。
 - 解决方法：重写 `ORDER` 函数，使其返回整数类型。

## PLS-00524：The parameter type in an ORDER method must be the containing object type

- OceanBase 错误码：9534
 - SQLSTATE：HY000
 - 错误原因：声明了没有用户指定参数的 `ORDER` 函数。`ORDER` 函数具有两个参数，一个是由编译器添加的默认 `SELF` 参数。 第二个参数由用户添加，并且必须与包含的对象类型相同。
 - 解决方法：修改参数类型。

## PLS-00525：Within SQL statements, only equality comparisons of objects are allowed without a map or order function

- OceanBase 错误码：9535
 - SQLSTATE：HY000
 - 错误原因：没有提供 `MAP` 或 `ORDER` 函数以进行相关比较。 如果未提供 `MAP` 或 `ORDER` 函数，则只能使用相等比较。
 - 解决方法：提供对象的 `MAP` 或 `ORDER` 函数或将程序更改为仅使用相等比较。

## PLS-00526：A MAP or ORDER function is required for comparing objects in PL/ SQL

- OceanBase 错误码：9524
 - SQLSTATE：HY000
 - 错误原因：在 PL 代码中，对象的比较未定义 `MAP` 或者 `ORDER` 函数。
 - 解决方法：定义 `MAP` 或 `ORDER` 函数并重试该操作。

## PLS-00527：MAP or ORDER functions require a PRAGMA RESTRICT_REFERENCES specifying :WNDS,WNPS,RNPS,RNDS

- OceanBase 错误码：9536
 - SQLSTATE：HY000
 - 错误原因：

     - 未指定 `pragma restrict_references` 。
     - 已指定 `pragma restrict_references` **，** 但 `pragma restrict_references` 中缺少了以下参数中的任意一种：`WNDS`、`WNPS` 、`RNPS` 或 `RNDS`。
 - 解决方法：添加或更正 `pragma`，然后重试该操作。

## PLS-00528：The parameters to an ORDER function must have IN mode

- OceanBase 错误码：9537
 - SQLSTATE：HY000
 - 错误原因：您已将 `ORDER` 函数的参数声明为 `OUT` 或 `IN OUT` 模式。
 - 解决方法：更正参数声明为 `IN` 模式。

## PLS-00537：A VARRAY must have a positive limit

- OceanBase 错误码：9611
 - SQLSTATE：HY000
 - 错误原因：使用非正限制声明了 VARRAY 类型，例如：`VARRAY（0）`。
 - 解决方法：声明具有正限制的 VARRAY 类型，然后重试该操作。

## PLS-00538：subprogram or cursor '%.*s' is declared in an object type specification and must be defined in the object type body

- OceanBase 错误码：9522
 - SQLSTATE：HY000
 - 错误原因：指定的子程序在对象类型的规范中声明，但未在对象类型主体中定义。
 - 解决方法：在对象类型主体中定义子程序，或从规范中删除声明。

## PLS-00539：subprogram '%.*s' is declared in an object type body and must be defined in the object type specification

- OceanBase 错误码：9521
 - SQLSTATE：HY000
 - 错误原因：指定的子程序在对象类型的主体中声明，但未在对象类型的规范中定义。 游标主体可以不定义。
 - 解决方法：在对象类型的规范中定义子程序，或从主体中删除声明。

## PLS-00587：a static method cannot be invoked on an instance value

- OceanBase 错误码：9527
 - SQLSTATE：HY000
 - 错误原因：尝试使用对象实例值而不是类型名作为方法调用名称的限定符，但是在调用静态方法时只能将类型名用作限定符。
 - 解决方法：如果方法是静态的，则使用类型名而不是对象实例值来限定方法的名称。

## PLS-00594：the SELF parameter can be declared only as IN or as IN OUT

- OceanBase 错误码：9530
 - SQLSTATE：HY000
 - 错误原因：`SELF` 参数被声明为 `OUT` 参数。
 - 解决方法：将 `SELF` 参数声明为 `IN` 或 `IN OUT` 参数。

## PLS-00630：pipelined functions must have a supported collection return type

- OceanBase 错误码：9601
 - SQLSTATE：HY000
 - 错误原因：使用不支持的返回类型指定了流水线函数。不支持如下集合类型作为流水线函数的返回类型：

     - 非集合。
     - PL/SQL 表。
     - 关联数组。
     - PL/SQL 类型的集合：rowid、mlslabel，long，long raw，boolean，binary_integer，pls_integer，string 和 urowid。
 - 解决方法：将支持的集合类型指定为流水线函数返回类型。

## PLS-00655：only functions can be declared as PIPELINED

- OceanBase 错误码：9600
 - SQLSTATE：HY000
 - 错误原因：PIPELINED 类型只支持在 FUNCTION 中定义。
 - 解决方式：将语句类型修改为 FUNCTION，或者去掉 PIPELINED 的使用。

## PLS-00658：constructor method name must match type name

- OceanBase 错误码：9528
 - SQLSTATE：HY000
 - 错误原因：尝试使用对象实例值而不是类型名作为方法调用名称的限定符，但是在调用静态方法时只能将类型名用作限定符。
 - 解决方法：如果方法是静态的，则使用类型名而不是对象实例值来限定方法的名称。

## PLS-00661：RETURN statement in a CONSTRUCTOR cannot include an expression

- OceanBase 错误码：9541
 - SQLSTATE：HY000
 - 错误原因：在 `CONSTRUCTOR` 主体的 `RETURN` 语句中存在表达式。
 - 解决方式：从 `RETURN` 语句中删除该表达式。

## PLS-00701：illegal ORACLE error number %.*s for PRAGMA EXCEPTION_INIT

- OceanBase 错误码：9629
 - SQLSTATE：HY000
 - 错误原因：传递给 `EXCEPTION_INIT` 的错误码编号超出范围。错误码编号的范围为 `00001`-`09999`（不包括 `00100`）或者 `20000`-`20999`（用于用户定义的错误）。
 - 解决方式：请使用有效的错误码。

## PLS-00702：second argument to PRAGMA EXCEPTION_INIT must be a numeric literal

- OceanBase 错误码：9676
 - SQLSTATE：HY000
 - 错误原因：传递给 EXCEPTION_INIT pragma 的第二个参数不是数字文本（例如：变量），第二个参数的范围为 `1`-`9999`（不包括 `100`）或者 `20000`-`20999`（用于用户定义的错误）。
 - 解决方式：用有效的错误码编号替换第二个参数。

## PLS-00710：Pragma AUTONOMOUS_TRANSACTION cannot be specified here

- OceanBase 错误码：9509
 - SQLSTATE：HY000
 - 错误原因：此处不能指定 `AUTONOMOUS_TRANSACTION` 程序。
 - 解决方法：检查程序名称是否拼写正确。

## PLS-00905：object '%.*s' is invalid

- OceanBase 错误码：9548
 - SQLSTATE：HY000
 - 错误原因：引用了无效的软件包规范或子程序。如果自从上次编译后，软件包规范或子程序的源代码或它引用的任何数据库对象已被丢弃，替换或更改，则该软件包或子程序无效。
 - 解决方法：找到软件包规范或子程序无效的原因，并确保能重新正确的编译该软件包规范或子程序。

## PLS-00994：Cursor Variables cannot be declared as part of a package

- OceanBase 错误码：9516
 - SQLSTATE：HY000
 - 错误原因：试图在程序包规范中声明一个游标变量，这是不允许的。 尽管可以在 PL 块、子程序或程序包中可以定义 `REF CURSOR` 类型，但是游标变量只能在块或子程序中声明。
 - 解决方法：将游标变量声明移到 PL 块或子程序中。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
