Получите ли вы "неожиданные результаты" или нет, зависит от того, что вы ожидаете, что мне не ясно из вашего вопроса.
Вы пытаетесь изолировать переменную для определенного соединения или увеличить ее как общий счетчик?
Область действия определяемой пользователем переменной ограничена одним соединением, и каждое соединение будет использоваться одним потоком в любой момент времени, поэтому в вашем примере вы должны ожидать, что значение будет изолировано внутри каждого соединения. Поскольку вы повторно инициализируете значение 0 в своем коде, вы не должны видеть никаких остаточных эффектов отдельных процессов, которые ранее использовали соединение.
Однако, поскольку вы сказали, что используете хранимую процедуру, я рекомендую вам объявить локальную переменную внутри хранимой процедуры и использовать ее вместо пользовательской переменной.
Локальная переменная будет ограничена хранимой процедурой, поэтому вам не нужно беспокоиться о текущем значении, влияющем на более поздний поток, повторно использующий соединение.