У меня был похожий подход, только для веб-сервисов, а не для хранимых процедур. Я бы сказал, что это нехорошая практика, и ее следует избегать, если в этом нет крайней необходимости.
Основная проблема, вероятно, не в производительности, а в том, что вы создаете компонент GIGO (garbage-in-garbage-out), где у вас нет формального контракта между вызывающей и процедурой. Это означает, что неправильные данные на вводе / выводе могут остаться незамеченными, и у вас будет адская отладка.
И да, вы также получите некоторое снижение производительности (вероятно, на обоих уровнях).