Динамический SQL - единственный способ сделать это, но я бы пересмотрел архитектуру вашего приложения, если это требуется. SQL не очень хорош в "обобщенном" коде. Это работает лучше всего, когда оно разработано и закодировано для выполнения отдельных задач.
Выбор из TableA отличается от выбора из TableB, даже если операторы выбора выглядят одинаково. Могут быть разные индексы, разные размеры таблиц, распределение данных и т. Д.
Вы можете создать свои индивидуальные хранимые процедуры, что является распространенным подходом. Имейте генератор кода, который создает различные избранные хранимые процедуры для нужных вам таблиц. У каждой таблицы будет свой собственный SP, который вы затем сможете связать с вашим приложением.
Я написал такие генераторы на T-SQL, но вы можете легко сделать это с большинством языков программирования. Это довольно простые вещи.
Просто добавьте еще одну вещь, так как Скотт E создал ORM ... вы также сможете использовать эти хранимые процедуры с самыми сложными ORM.