【发布时间】:2014-11-23 05:21:23
【问题描述】:
我想检查是否在表格中插入了有效的电话号码,所以我的触发代码在这里:
select start_index
into mob_index
from gmarg_mobile_operators
where START_INDEX = substr(:new.contact_info,0,3);
if (REGEXP_LIKE (:NEW.CONTACT_INFO,'^(?:'|| mob_index ||')[\-,\:]{0,1}[0-9][0-9][\-,\:]{0,1}[0-9][0-9][\-,\:]{0,1}[0-9][0-9]')) then
found := 1;
end if;
我检查了我的正则表达式:“^(?:555)[-,:]{0,1}[0-9][0-9][-,:]{0,1}[0- 9][0-9][-,:]{0,1}[0-9][0-9]" 在几个在线工具上都是正确的。
当我运行我的触发器时,它编译成功,但在插入一行时显示以下错误:
insert into GMARG_CONTACTS
(CLINET_ID,CONTACT_INFO,contact_type_id)
values
(0,'555194117','Mobile')
Error report -
SQL Error: ORA-12728: invalid range in regular expression
ORA-06512: at "HR.GMARG_TRIGGER_CONTACT", line 12
ORA-04088: error during execution of trigger 'HR.GMARG_TRIGGER_CONTACT'
12728. 00000 - "invalid range in regular expression"
*Cause: An invalid range was found in the regular expression.
*Action: Ensure a valid range is being used.
那么,如果我的正则表达式是正确的,为什么 oracle 会显示错误? 我试图找到答案,或重新定义我的正则表达式,但没有前进的步骤...... 提前谢谢你
【问题讨论】: