SQL 错误:ORA-01722:无效号码

Posted

技术标签:

【中文标题】SQL 错误:ORA-01722:无效号码【英文标题】:SQL Error: ORA-01722: invalid number 【发布时间】:2015-11-28 06:53:39 【问题描述】:

这是我的桌子。

CREATE TABLE SCHEDULE (
    SCHEDULE_ID INT                NOT NULL
    ,ARRV_TIME  INT                NOT NULL
    ,DEP_TIME   INT                NOT NULL
    ,BUS_TRANSFERS  VARCHAR2(40)   NOT NULL
    ,BUS_ID  NUMERIC               NOT NULL
    ,TRAVEL_DIRECTION  VARCHAR(10) NOT NULL
    ,WEEK_DAY  INTEGER             NOT NULL
);

我运行这个插入语句

INSERT INTO SCHEDULE (SCHEDULE_ID, ARRV_TIME, DEP_TIME, BUS_TRANSFERS, BUS_ID, TRAVEL_DIRECTION, WEEK_DAY) 
VALUES (SEQ_SCHEDULE.NEXTVAL,'10', '11', 'White Oak', '2', 'North', '4');

我收到此错误消息:

从第 1 行开始的错误命令 - INSERT INTO SCHEDULE (SCHEDULE_ID、ARRV_TIME、DEP_TIME、BUS_TRANSFERS、BUS_ID、 TRAVEL_DIRECTION, WEEK_DAY) 值 (SEQ_SCHEDULE.NEXTVAL,'10', '11', '白橡树', '2', '北', '4')

错误报告 - 01722. 00000 - “无效号码” *原因:指定的号码无效。 *操作:指定一个有效的数字。

【问题讨论】:

工作得很好:sqlfiddle.com/#!4/d6a1a4/1 虽然这 不是 导致您的问题,但绝不应在数字周围使用单引号。它们仅用于字符值。 【参考方案1】:

试试这个:-

CREATE TABLE SCHEDULE( 
SCHEDULE_ID INTEGER NOT NULL ,
ARRV_TIME INTEGER NOT NULL ,
DEP_TIME INTEGER NOT NULL ,
BUS_TRANSFERS VARCHAR2(40) NOT NULL ,
BUS_ID INTEGER NOT NULL ,
TRAVEL_DIRECTION VARCHAR2(10) NOT NULL ,
WEEK_DAY INTEGER NOT NULL );

INSERT INTO SCHEDULE(SCHEDULE_ID, ARRV_TIME, DEP_TIME,BUS_TRANSFERS,BUS_ID, TRAVEL_DIRECTION, WEEK_DAY)
VALUES(SEQ_SCHEDULE.NEXTVAL,10,11, 'White Oak',2,'North',4);

【讨论】:

【参考方案2】:

此错误是因为您已将到达时间声明为 int,并且您正尝试为此插入“10”值。哪个是字符串,请去掉非字符串数据类型的引号

【讨论】:

以上是关于SQL 错误:ORA-01722:无效号码的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 oracle ORA-01722 无效号码错误

SELECT FROM AS 导致 ORA-01722: 无效号码

Oracle sql 错误 ora-01722 无效数字 ora-02063 前行来自

ORA-01722: 使用 to_number 时号码无效

ORA-01722:无效号码 ORA-06512:在“BWSTAGE.LOAD_CONTACT_PROCEDURE”,第 8 行 ORA-06512:在第 2 行

Oracle报错ORA-01722: 无效数字排查解决方案