После альтера в кеше находится две версии процедуры, если на старую были
ссылки в кеше. В этом случае старые запросы, есс-но, будут работать со
старой версией процедуры, а новые подхватывать новую версию. Если же не
было ссылок на момент альтера, то старая версия удаляется из кеша и
остается только новая.
Лично для меня это никак не проясняет вопрос почему после возникновения
ситуации с двумя версиями процедуры:
1) Не помогает вызов процедуры в новой транзакции
2) Не помогает перекомпилляция процедуры
Вот я вот щас дома словил описанную ситуацию, открыл в редакторе
процедуру В - текст в ней изменённый. Беру и в этом же соединении
перекомпиллирую её ещё раз и сновы вызываю и опять вызывается старая
версия. Как-то это очень и очень странно.
У тебя это воспроизводится или нет?