create or replace
FUNCTION "VALIDATE_ISBN10" (
ISBN10 IN VARCHAR2
) RETURN NUMBER IS
v_checksum NUMBER := 0;
v_digit NUMBER := 0;
v_pos NUMBER := 1;
v_rem NUMBER;
BEGIN
IF (LENGTH(ISBN10) != 10)
THEN RETURN 0;
END IF;
WHILE (v_pos <= 9) LOOP
v_digit := substr(ISBN10,(v_pos),1);
v_checksum := v_checksum + (v_pos * v_digit);
v_pos := v_pos + 1;
END LOOP;
v_rem := mod(v_checksum,11);
IF (v_rem = 10 AND 'X' = substr(ISBN10,10,1))
THEN RETURN 1;
END IF;
IF (v_rem < 10 AND TO_NUMBER(substr(ISBN10,10,1)) = v_rem)
THEN RETURN 1;
END IF;
return 0;
exception when value_error then
return 0;
END VALIDATE_ISBN10;
Java, Oracle, PHP, Python, C, Objective-C, and maybe even some web...
Whatever tickles my fancy today.
Saturday, November 20, 2010
Oracle PL/SQL: ISBN10 Validator
Another little function to make sure you've got a valid ISBN10 before you attempt to convert it.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment