【发布时间】:2015-12-18 06:50:18
【问题描述】:
国民身份证号码如下所示:878552361V。
它包含 9 位数字和一个大写字母 'V' 或 'X' 在末尾。
如何使用 Oracle Forms 11g 库对其进行验证?
【问题讨论】:
-
regexp_like(<column_name>, '\d+{9}(X|V)')
标签: oracle11g oracleforms
国民身份证号码如下所示:878552361V。
它包含 9 位数字和一个大写字母 'V' 或 'X' 在末尾。
如何使用 Oracle Forms 11g 库对其进行验证?
【问题讨论】:
regexp_like(<column_name>, '\d+{9}(X|V)')
标签: oracle11g oracleforms
在你的库中编写如下函数:
FUNCTION validate_nid (p_nid IN VARCHAR2)
RETURN BOOLEAN
IS
v NUMBER;
e EXCEPTION;
BEGIN
IF LENGTH (p_nid) > 10
THEN
RAISE e;
END IF;
-- check if first 8 are alpa
v := SUBSTR (p_nid, 1, 9);
IF SUBSTR (p_nid, 10, 1) != 'V' Or
SUBSTR (p_nid, 10, 1) != 'X'
THEN
RAISE e;
END IF;
RETURN TRUE;
EXCEPTION
WHEN e
THEN
RETURN FALSE;
WHEN OTHERS
THEN
RETURN FALSE;
END;
并在 when-validate-item 触发器中调用此函数,如下所示:
if not validate_nid('878552361V') then
raise form_trigger_failure;
end if;
【讨论】:
if (regexp_substr('876963256V','^[0-9]{9}[vV|xX]$')) is null then
raise form_trigger_failure;
end if;
【讨论】: