Oracle11g 如何使用Oracle表单验证NIC号?

Oracle11g 如何使用Oracle表单验证NIC号?,oracle11g,oracleforms,Oracle11g,Oracleforms,国民身份证号码如下所示:878552361V 它包含9位数字,结尾有一个大写字母'V'或'X' 如何使用Oracle Forms 11g库对其进行验证?在库中编写一个函数,如下所示: FUNCTION validate_nid (p_nid IN VARCHAR2) RETURN BOOLEAN IS v NUMBER; e EXCEPTION; BEGIN IF LENGTH (p_nid) > 10 THEN RAISE e; END

国民身份证号码如下所示:
878552361V

它包含9位数字,结尾有一个大写字母
'V'
'X'


如何使用Oracle Forms 11g库对其进行验证?

在库中编写一个函数,如下所示:

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;
并在验证项触发器时调用此函数,如下所示:

if not validate_nid('878552361V') then
  raise form_trigger_failure;
end if;
regexp_-like(,'\d+{9}(X | V)
  if (regexp_substr('876963256V','^[0-9]{9}[vV|xX]$')) is null then 
         raise form_trigger_failure;
    end if;