ORA-01722:将数据插入表时出现“无效数字”错误

时间:2013-03-12 08:28:12

标签: sql constraints

给我的场景如下。 使用以下列创建员工;

·         EmpId
·         EmpName
·         EmpEmail
·         EmpDate

在OLTP中,我需要一次输入一条记录,然后在后端进行验证;

·         EmpId should have a sequence generator
·         No numeric values allowed in EmpName
·         EmpDate should be in format mm/dd/yyyy
·         Email Id should have following validations
o   Should contain ‘@’ sign and it should be only one
o   Should end with ‘.com’
o   Email id should have more than 3 characters

为此我创建了一个像这样的表和序列

create table emp_316599
  (EmpId number(6),
  EmpName varchar2(15)CONSTRAINT chk_EmpName 
     check(regexp_like(EmpName,'![0-9]+')),
  EmpEmail varchar2(15) CONSTRAINT chk_EmpEmail
    check((length(EmpEmail)>3) and
      substr(EmpEmail,-4)='.com' and
            instr(EmpEmail,'@',1,2)=0),
  EmpDate varchar2(15) 
  CONSTRAINT chek_EmpDate
    check(EmpDate=to_char(EmpDate,'mm-dd-yyyy')));

  Table created.       

 create sequence Emp_SEQ
 increment by 1
 start with 1
 maxvalue 1000
 cache 20
sequence created.

这就是问题所在。 当我尝试使用以下命令插入时,它给了我错误。

insert into emp_316599 values(Emp_SEQ.NEXTVAL,'&EmpName','&EmpEmail','&EmpDate');

ORA-01722无效号码

请帮帮我。

工作环境如下 DB:Oracle 11g, 工具:plsql developer

由于 库马尔

1 个答案:

答案 0 :(得分:0)

我得到了类似的错误,我在执行更新之前修复了使用此定义:

set define off;