Plsql 神秘的ORA-06553:PLS-103

Plsql 神秘的ORA-06553:PLS-103,plsql,Plsql,我在处理PLSQL包时遇到了一个非常奇怪的问题 我们在两个生产和测试环境中使用相同的包和主体。生产版上的编译没有问题,但在测试时会抛出此错误 Error: ORA-06553: PLS-103: Encountered the symbol "ALTERNATIV_NAME" when expecting one of the following: <an identifier> <a double-quoted delimited-identifier>

我在处理PLSQL包时遇到了一个非常奇怪的问题

我们在两个生产和测试环境中使用相同的包和主体。生产版上的编译没有问题,但在测试时会抛出此错误

Error: 
ORA-06553: PLS-103: Encountered the symbol "ALTERNATIV_NAME" when expecting one of the following:
     <an identifier> <a double-quoted delimited-identifier> 
ORA-06553: PLS-112: end-of-line in quoted identifier".
错误:
ORA-06553:PLS-103:在预期以下情况之一时遇到符号“ALTERNATIV_NAME”:
ORA-06553:PLS-112:引用标识符中的行尾”。
我已经将相同的包结构和主体从生产数据库复制到测试数据库,但仍然得到相同的包结构。主体抛出上述错误


我无法理解什么是“ALTERNATIV_NAME”,非常感谢您的帮助。

该错误是一个语法错误。源代码中有一些内容破坏了编译。错误消息应包括行号,它将指向您要查看的位置

“我的代码在环境A中运行,但在环境B中失败”这种形式的问题实际上是我们无法回答的。即使您发布了代码,我们也可能无法提供帮助,因为最可能的原因是两个环境之间存在一些差异,显然我们无法访问它们

好消息是,您确实可以访问这两个环境,因此您可以找出这两个环境之间的区别。例如,一种可能的解释是脚本中的非打印字符在一个环境中被忽略,但在另一个环境中被抛出,因为它们在不同的操作系统上


顺便说一句,这表明您在部署过程中遇到了问题。您不应该在生产中有任何未在测试中成功运行的东西。

我知道时间已经晚了,但可能会帮助别人

我也有同样的问题,似乎在PL/SQL代码中,我引用了一个列

在一个视图中

当我在SQLDeveloper编辑器中浏览视图时,列名跨越两行


将其放在一行中修复了我的问题。

如何在测试环境和产品环境中编译代码。是否使用sql plus进行编译?尝试将sqlbl设置为on;如果使用sql plus进行部署,则尝试部署代码在包中搜索文本替换名称。生产环境中可能有一个具有该名称的对象但它不是在测试中创建的environment@pablomatico我正在使用sql developer工具编译包,右键单击-->编译。然后我得到了这个错误。很奇怪,同一个包(生产)编译时没有任何错误。测试中的一个给出了这个奇怪的错误。以下查询没有给出任何输出。选择*来自用户源,其中upper(文本)类似('%ALTERNATIV_NAME%');选择*来自用户选项卡,其中upper(列名称)类似('%ALTERNATIV_NAME%');选择*来自用户对象,其中upper(对象名称)与“%ALTERNATIV_NAME%”类似,包中也没有任何带有“ALTERNATIV_NAME”的内容
ORA-06553:PLS-112:quoted identifier中的行尾“
似乎有一些错误的引用文字