Dynamisches SQL ist die einzige Möglichkeit, dies zu tun, aber ich würde die Architektur Ihrer Anwendung überdenken, wenn dies erforderlich ist. SQL ist nicht sehr gut in "generalisiertem" Code. Es funktioniert am besten, wenn es für einzelne Aufgaben entworfen und codiert ist.
Die Auswahl aus TableA ist nicht dasselbe wie die Auswahl aus TableB, auch wenn die select-Anweisungen gleich aussehen. Es kann unterschiedliche Indizes, unterschiedliche Tabellengrößen, Datenverteilung usw. geben.
Sie könnten Ihre individuellen gespeicherten Prozeduren generieren, was ein gängiger Ansatz ist. Verwenden Sie einen Codegenerator, der die verschiedenen ausgewählten gespeicherten Prozeduren für die von Ihnen benötigten Tabellen erstellt. Jede Tabelle hätte ihre eigenen SP(s), die Sie dann in Ihre Anwendung einbinden könnten.
Ich habe diese Art von Generatoren in T-SQL geschrieben, aber Sie könnten es problemlos mit den meisten Programmiersprachen machen. Es ist ziemlich einfaches Zeug.
Nur um noch etwas hinzuzufügen, da Scott E. ORMs angesprochen hat... Sie sollten auch in der Lage sein, diese gespeicherten Prozeduren mit den anspruchsvollsten ORMs zu verwenden.