神秘的 ORA-06553:PLS-103
Posted
技术标签:
【中文标题】神秘的 ORA-06553:PLS-103【英文标题】:Mysterious ORA-06553: PLS-103 【发布时间】:2015-12-03 09:20:50 【问题描述】:我在处理 PLSQL 包时遇到了一个非常奇怪的问题。
我们在 PRODUCTION 和 TEST 两个环境中拥有相同的包和主体。 PRODUCTION 上的编译没有问题,但在 TEST 上会抛出此错误
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".
我已将与正文相同的包结构从 PRODUCTION 复制到 TEST 数据库,但我仍然得到相同的结果。正文抛出上述错误。
我无法理解“ALTERNATIV_NAME”是什么,非常感谢任何帮助。
【问题讨论】:
如何在测试环境和生产环境中编译代码。您是否为此使用 sql plus? 尝试设置sqlbl;如果您使用 sql plus 进行部署,请尝试部署代码 在您的包中搜索文本 ALTERNATIVE_NAME。在生产环境中可能有一个具有该名称的对象,但它不是在测试环境中创建的 @pablomatico 我正在使用sql开发工具编译包右键-->编译。然后我得到这个错误。很奇怪,同一个包(PRODUCTION)编译时没有任何错误。 TEST 上的那个给出了这个奇怪的错误。以下查询没有给出任何输出。 select * from user_source where upper(text) like ('%ALTERNATIV_NAME%'); select * from user_tab_cols where upper(column_name) like ('%ALTERNATIV_NAME%'); select * from user_objects where upper(OBJECT_NAME) like '%ALTERNATIV_NAME%';该软件包也没有任何带有“ALTERNATIV_NAME”的内容ORA-06553: PLS-112: end-of-line in quoted identifier"
似乎有一些引用错误的文字
【参考方案1】:
错误是语法错误。源代码中有一些东西破坏了编译。错误消息应包含行号,它将指向您要查看的位置。
“我的代码在环境 A 中运行,但在环境 B 中失败”形式的问题实际上是我们无法回答的。即使您发布了您的代码,我们仍有可能无法提供帮助,因为最可能的原因是两个环境之间存在一些差异,显然我们无权访问它们。
好消息是,您确实可以访问您的两个环境,因此您可以找出两者之间的不同之处。例如,一种可能的解释是脚本中的非打印字符,它在一种环境中被忽略,但在另一种环境中由于它们位于不同的操作系统上而被忽略。
顺便说一句,这表明您在部署过程中存在问题。您不应该在 PRODUCTION 中有任何未在 TEST 中成功运行的内容。
【讨论】:
【参考方案2】:我知道已经晚了,但也许可以帮助别人。
我有同样的问题,似乎在 PL/SQL 代码中,我引用了一个列
在视图中,
当我在 sql developer editor 中浏览视图时,列名跨越了两行!!!...
将它放在一行中解决了我的问题。
【讨论】:
以上是关于神秘的 ORA-06553:PLS-103的主要内容,如果未能解决你的问题,请参考以下文章
ora-06553 pls-306 调用“ogc_x”时参数的数量或类型错误
当我调用该过程时,它给了我错误:ORA-06553: PLS-306: wrong number or types of arguments in call to phone_info