PL/SQL работа с IP адресом

Функция разбирает строку IP по байтам и добавляет число к последнему байту. utl_inaddr.get_host_address — получает IP адрес сервера.

function IP_PLUS(ip_string in varchar2, iNUM in integer) return varchar2 is
d1 integer;
d2 integer;
d3 integer;
q1 varchar2(3);
q2 varchar2(3);
q3 varchar2(3);
q4 varchar2(3);
v8 varchar2(15);
begin
-- 1. parse the input, e.g. '203.30.237.2'
d1 := INSTR(ip_string, '.'); -- first dot
d2 := INSTR(ip_string, '.', 1, 2); -- second dot
d3 := INSTR(ip_string, '.', 1, 3); -- third dot
q1 := SUBSTR(ip_string, 1, d1 - 1); -- e.g. '203'
q2 := SUBSTR(ip_string, d1 + 1, d2 - d1 - 1); -- e.g. '30'
q3 := SUBSTR(ip_string, d2 + 1, d3 - d2 - 1); -- e.g. '237'
q4 := SUBSTR(ip_string, d3 + 1); -- e.g. '2'
q4 := q4 + iNUM;
v8 := q1 || '.' || q2 || '.' || q3 || '.' || q4;
return v8;
end IP_PLUS;