Динамичният SQL е единственият начин да направите това, но бих преразгледал архитектурата на вашето приложение, ако изисква това. SQL не е много добър в "генерализирания" код. Работи най-добре, когато е проектиран и кодиран да изпълнява отделни задачи.
Избирането от TableA не е същото като избирането от TableB, дори ако операторите за избор изглеждат еднакви. Може да има различни индекси, различни размери на таблици, разпределение на данни и т.н.
Можете да генерирате вашите индивидуални съхранени процедури, което е често срещан подход. Имайте генератор на код, който създава различните избрани съхранени процедури за таблиците, от които се нуждаете. Всяка таблица ще има свои собствени SP(s), които след това можете да свържете към вашето приложение.
Написал съм тези видове генератори в T-SQL, но можете лесно да го направите с повечето езици за програмиране. Това са доста елементарни неща.
Само да добавя още нещо, тъй като Скот Е повдигна ORM... вие също трябва да можете да използвате тези съхранени процедури с най-сложните ORM.