1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
CREATE PROCEDURE GEOIP()
LANGUAGE SQL
BEGIN
DECLARE v_ip VARCHAR(20);
DECLARE v_newip BIGINT;
DECLARE error_ip CONDITION FOR SQLSTATE '22011';
FOR_LOOP: FOR EACH_ROW AS C1 CURSOR FOR
SELECT IP,
cast(substr(IP, 1, posstr(IP, '.')-1) as BIGINT)*16777216 +
cast(substr(substr(IP, posstr(IP, '.')+1), 1, posstr(substr(IP, posstr(IP, '.')+1), '.')-1) as BIGINT)*65536 +
cast(substr(substr(substr(IP, posstr(IP, '.')+1), posstr(substr(IP, posstr(IP, '.')+1), '.')+1), 1, posstr(substr(substr(IP, posstr(IP, '.')+1), posstr(substr(IP, posstr(IP, '.')+1), '.')+1), '.')-1) as BIGINT)*256 +
cast(substr(substr(substr(IP, posstr(IP, '.')+1), posstr(substr(IP, posstr(IP, '.')+1), '.')+1), posstr(substr(substr(IP, posstr(IP, '.')+1), posstr(substr(IP, posstr(IP, '.')+1), '.')+1), '.')+1) as BIGINT) as part4
FROM UTILISATEUR.IP
DO
insert into utilisateur.newip values (EACH_ROW.IP, EACH_ROW.part4);
END FOR;
END |
Partager