Я не вникал, как у нас сделан ROW_COUNT, но общее правило (для всех известных мне серверов) гласит - переменные, описывающие выполнение оператора (например @@ERROR, @@ROWS_AFFECTED, @@FETCH_STATUS в T-SQL), имеют валидное значение только сразу после этого оператора.
Т.е. ты хочешь сказать что если я после команды, например, просто присвою что-то какой-то переменной, то у меня ROW_COUNT уже может быть невалиден? Не слишком ли жесткое правило? Во вторых как быть с EXECUTE PROCEDURE RETURNING_VALUES ? Что должно быть в ROW_COUNT после выполнения этой команды?