Если «вспомогательные хранимые процедуры» уже написаны, то ваш подход может сработать, если хранимая процедура, вызванная отчетом, создаст временную таблицу, затем заполнит ее на основе переданного параметра, а затем вернет данные из временной таблицы.
Если «подпрограммы с хранимыми данными» не уже написаны, другой вариант - просто использовать оператор CASE и иметь несколько SELECT в хранимой процедуре, вызываемой отчетом.