Ok...but there is a problem...

this is my procedure:

create or replace procedure bo is
client_ip varchar2(20);
begin
client_ip := marco();
insert into ipm values(client_ip);
htp.prints(client_ip);
end bo;

and this, my function:

CREATE OR REPLACE Function marco
RETURN Varchar2
IS
v_ip Varchar2(30);
Begin
Select SYS_CONTEXT('USERENV','IP_ADDRESS')
Into v_ip
From Dual;
Return v_ip;
End;


when i'm calling procedure by browser, client_ip is the server ip!!!
I don't know why!...can u help me?

thank u for everything...