Я просто делаю вывод, но вы тоже ...
1. Просто хочу сделать код более лаконичным.
2. Хотите, чтобы выходные данные имели подпись участника (те же поля и т. Д.).
В случае 1.
я бы оставил ваш код как есть. Каждый запрос отличается, и разделение их с помощью операторов IF делает читаемым и очевидным, что существует три пути выполнения.
Последнее часто требуется в случае систем привязки данных, которые автоматизируют часть работы программистов. Если это так, я бы все равно оставил код с инструкциями IF. Если вы затем явно CAST каждого поля одного и того же типа (например, INT или VARCHAR (256) и т. Д.), А затем убедитесь, что одни и те же имена полей используются каждый раз (например, ID или имя и т. Д.), То вы будете получить одинаковую подпись для каждого пути выполнения.
EDIT:
Я все еще не совсем уверен относительно того, чего вы хотите достичь и, более конкретно, с какими проблемами вы сталкиваетесь.
Если вы просто пытаетесь выполнить один вызов БД и получить обратно три набора данных, то наличие хранимой процедуры с вашими 3 SELECT
инструкциями сделает именно это. В зависимости от того, как вы обращаетесь к базе данных, вы сможете использовать ее для трех наборов записей.
Итак, я подозреваю, что проблемы, с которыми вы сталкиваетесь, связаны не с SQL, а с вашим приложением. Какой язык вы используете? Как вы в настоящее время обращаетесь к набору записей? С какими проблемами вы сталкиваетесь, когда SP возвращает 3 набора записей? И т. Д., И т. Д. *