Одним из решений может быть отключение ссылки на время выполнения запроса. Вы можете сделать это с помощью некоторого локального JavaScript, который обновляет текущую страницу или переключиться на другую страницу, на которой вообще нет ссылки - все зависит от дизайна вашего сайта.
Другой альтернативой может быть установка защитной переменной в коде так, чтобы она вызывала хранимую процедуру только тогда, когда она не установлена:
if (!callingProcedure)
{
callingProcedure = true;
call procedure
}
Затем, когда процедура возвращает сброс callingProcedure
в false.
Наличие какого-либо индикатора прогресса также поможет - дать пользователям обратную связь, что сайт действительно что-то делает.