Я понимаю, что это старый вопрос, но у меня была та же проблема, и, кажется, я нашел правильный ответ.
Это связано с SqlCommandBuilder.DeriveParameters.
DeriveParameters автоматически добавляет параметр ReturnValue и присваивает ему имя "@RETURN_VALUE", поэтому просто обратитесь к нему, и вы получите его значение.
Вы также можете пропустить DeriveParameters и добавить все параметры самостоятельнонапример, с AddWithValue или аналогичным, включая ваш параметр ReturnValue (с любым именем, которое вам нравится).
Но как выполнение DeriveParameters, так и добавление параметра ReturnValue самостоятельно не будут работать.