【问题标题】:Cannot locate correct line where error is being thrown无法找到引发错误的正确行
【发布时间】:2014-03-06 18:12:41
【问题描述】:

我从here 注意到,数字数据类型的预期宽度动态设置为您需要的任何值,精度最高可达 21 个字节,但是我可以在我的代码中看到该行

MAX_LENGTH CONSTANT NUMBER := 2000;

正在抛出错误:

BEGIN
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "DBAuser.MAKE_VIEWS", line 58

我是否误解了错误,或者 CONSTANT 修饰符是否可能会改变我不期望的东西?是否有系统级别的设置可以改变数字类型的默认宽度?

编辑以反映更准确的标题 - 问题是我正在查看我认为是第 58 行的内容,但实际上不是

【问题讨论】:

  • 错误不在第 1 行,而是在第 58 行,那行有什么?在这个对象上:DBAuser.MAKE_VIEWS
  • @JorgeCampos 是的,我复制的行是第 58 行 - 我明白 :)
  • 您显示的作业与字符转换无关,这就是失败的原因。我发现有时报告的行号不是实际的失败行。您是否有任何TO_CHAR 电话,或者您是否在某处将数字连接到字符串?
  • 查询USER_SOURCE得到真正的58行
  • 感谢@JeffreyKemp - 重新编译包并按照建议查询用户源 - 必须追溯一些文件,但罪魁祸首是在比我正在查看的更有意义的一行上找到的。 ..您想重写您的评论作为答案,我可以将其标记为解决方案?

标签: oracle plsql


【解决方案1】:

查询USER_SOURCE 以确定错误所抱怨的确切行。

【讨论】:

    猜你喜欢
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2019-11-15
    • 2013-01-10
    • 2019-03-22
    • 2020-12-13
    • 1970-01-01
    相关资源
    最近更新 更多