I have a procedure and I would like that only one user could execute this procedure at same time.
A simple solution can be to use lock at the table level, by using FOR UPDATE.
This is just off the top of my head: Consider using a named lock via dbms_lock. http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_lock.htm#CHDICHDC
Right after the begin statement get the lock, do the work, then release it on exit (Keep errors/exceptions in mind!).
KT