Problem polega na tym, że zakres tabeli tymczasowej istnieje tylko w instrukcji exec(). Możesz przekształcić swoją tabelę tymczasową w "globalną" tabelę tymczasową, używając 2 znaków hash -> ##tempTable. Zastanawiam się jednak, dlaczego używasz zmiennej @dynamicallyBuiltWhereClause do generowania instrukcji SQL.
Zrobiłem to, co robisz w przeszłości, ale odniosłem większy sukces w generowaniu SQL z aplikacji (używając C# do generowania mojego SQL).
Możesz także zajrzeć do Zmiennych tabel. Widziałem dziwne przypadki używania tabel tymczasowych, w których aplikacja ponownie używa połączenia, a tabela tymczasowa z ostatniego zapytania nadal tam jest.