首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-01722:无效数字

ORA-01722:无效数字
EN

Stack Overflow用户
提问于 2010-02-26 01:19:04
回答 3查看 6.9K关注 0票数 4

我得到了臭名昭著的无效编号Oracle错误。Hibernate发出了一个包含很多列的插入,我想知道出现问题的列的名称。有可能吗?

仅供参考,插入内容如下:

代码语言:javascript
复制
insert into GEM_INVOICE_HEADER 
   (ENDORSEE_ACCOUNT_ID, INVOICE_CODE, APPROVAL_ORGAN, APROVAL_DATE, APROVAL_REFERENCE, BALANCE_BASE_AMOUNT, BALANCE_DEDUCT_AMOUNT, BALANCE_TOTAL_AMOUNT, BALANCE_VAT_AMOUNT, BALANCE_VAT_DED_AMOUNT, BALANCE_VAT_NOT_DED_AMOUNT, DESCRIPTION, SUPPLIER_INVOICE_NUMBER, INVOICE_DATE, RECEIPT_DATE, MEMO, VAT_INTRACOM, INVOICE_BASE_AMOUNT, INVOICE_VAT_AMOUNT, INVOICE_VAT_DED_AMOUNT, INVOICE_VAT_NOT_DED_AMOUNT, INVOICE_DEDUCT_AMOUNT, INVOICE_TOTAL_AMOUNT, VAT_EXEMPT, RECTIFICATION_SIGN, REASON, LOT, FILE_ID, RETAINED, INSTITUTION_ID, PERIOD_CODE, IS_RECTIFIED, DEFAULT_OFFBUDGET_ACCOUNT, OFFBUDGET_DOC_ID, PHASE_OF_ACCOUNTING, ACCOUNTED_OFF_BUDGET, CANCEL_DOC_ID, BUDGET_TYPE, INVOICE_TYPE, SOURCE_ID, STATE_ID, MANAGER_UNIT_ID, DOCUMENT_TYPE_CODE, ACCOUNTED_DOC_ID, ACCOUNTING_LIST, ENDORSEE_ID, PAYMASTER_ID, SUPPLIER_ID, SUPPLIER_ACCOUNT_ID, PAY_JUSTIFY_ID, PETTY_CASH_ID, DBOID) 
values 
   (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-26 06:06:41

试试DBMS_SQL.LAST_ERROR_POSITION

它将告诉您错误在SQL字符串中的字符位置。不知道它是否可以在Hibernate中工作,但是在PL/SQL中可以。

代码语言:javascript
复制
DECLARE
    v_ret NUMBER;
    v_text varchar2(10) := 'a';
BEGIN
    insert into a_test (val1, val2) values (1,v_text);
exception
    when others then 
        v_ret := DBMS_SQL.LAST_ERROR_POSITION;
        dbms_output.put_line(dbms_utility.format_error_stack);
        dbms_output.put_line('Error at offset position '||v_ret);
END;
.
/

注意,'43‘是'insert’的偏移量,忽略前面的空格。

票数 6
EN

Stack Overflow用户

发布于 2010-03-19 11:00:25

您需要Oracle DML错误日志记录。你的朋友是err$_dest。

这可以告诉您哪一列失败了。

http://www.oracle-base.com/articles/10g/DmlErrorLogging_10gR2.php#insert

票数 1
EN

Stack Overflow用户

发布于 2010-02-26 01:21:38

不幸的是,您无法让Oracle告诉您是哪一列导致了问题。您是否可以将insert数据转储为insert语句,以便通过sqlplus手动运行?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2336048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档