代码之家  ›  专栏  ›  技术社区  ›  Birkl

ORA-01722 at通过DB链路插入

  •  0
  • Birkl  · 技术社区  · 7 年前

    我正在使用oracle SQL,希望通过链接将数据插入远程数据库。

     insert into V_ADITO_ONLINE_BEITRITT@MDB.IGM (<82 different columnNames>)
     values (<82 different values>);
    

    就我检查的所有数据类型、列和值都匹配而言,我发现了以下错误:

    Errorcode 1722, SQL-Status 42000: ORA-01722: Invalid Number
    ORA-02063: previous line of MDB.IGM
    

    如果有人能帮我解决这个错误,我将不胜感激。

    V\u ADITO\u ONLINE\u Beitrit是一个视图,如果这有任何帮助的话。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Daniel E.    7 年前

    Source Orafaq.com

    试图将字符串转换为数字时,会出现ORA-01722(“无效数字”)错误

    在执行插入时。。。值(…) 您尝试插入的数据项之一是无效数字。

    定位并更正。 如果所有数字看起来都有效,那么您的列可能出现了顺序错误,并且VALUES子句中的一个项目被插入到NUMBER列中,而不是预期的VARCHAR2列中。当表中添加或删除了列时,可能会发生这种情况。

    如果您正在执行插入或更新操作,则使用提供值的子查询。显然,前面的考虑也适用于这里。更复杂的是,有问题的字符串被隐藏为表中的一行。修复方法是识别具有非数字字符串的行,并更改数据(如果有错误)或向子查询添加一些内容以避免选择它。问题在于确定确切的行。 假设错误数据是字母字符,可以使用以下查询:

    SELECT ...  WHERE UPPER(col) != LOWER(col)
    

    其中col是包含错误数据的列。

        2
  •  0
  •   Sanders the Softwarer    7 年前

    尝试注释一半的字段名和值,并检查ORA-1722是否仍然存在。当您发现包含一半的错误时,请尝试注释其中的一半,依此类推。准确定位字段(&A);产生问题的值,检查并修复它们。