Проблемът е, че обхватът на вашата временна таблица съществува само в оператора exec(). Можете да преобразувате вашата временна таблица в "глобална" временна таблица, като използвате 2 знака хеш -> ##tempTable. Чудя се обаче защо използвате променлива @dynamicallyBuiltWhereClause, за да генерирате своя SQL оператор.
Правил съм това, което правите вие в миналото, но постигнах по-голям успех в генерирането на SQL от приложението (използвайки C# за генериране на моя SQL).
Също така може да искате да разгледате променливите на таблицата. Виждал съм някои странни случаи с използване на временни таблици, където приложение използва повторно връзка и временната таблица от последната заявка все още е там.