Intereting Posts
IIF (…) не признанная встроенная функция Создание много-много таблиц соединений в Entity Framework Создание ранга, который сбрасывается по определенному значению столбца получить последователей twitter, как с помощью MySQL TextFieldParser, не обрабатывающий последнюю строку Обновление Single Row на группу Проверьте, принадлежит ли метка времени (милли) к определенному дню Повторите все базовые строки таблицы для каждой левой строки строки соответствия Как изменить сортировку базы данных sqlite3 для незаметного сортировки регистра? Что лучше: специальные запросы или хранимые процедуры? Как я могу улучшить это присоединение к 4 счетам? Как избежать дублирования значений для INSERT в SQL? Как защитить от SQL-инъекции, когда предложение WHERE динамически создается из формы поиска? Ошибка получения индексного номера в базе данных с помощью C #, показывающая -1 Внешняя функция «Hello World» в SQL Anywhere с DLL с поддержкой Powerbuilder

Создайте временную таблицу с динамическим SQL в SQL Server 2008

Короче говоря…

Я создаю веб-приложение, в котором пользователь может выбрать любую комбинацию из примерно 40 параметров. Однако для одного из результатов, которые они хотят (инвестиционный опыт), мне приходится извлекать информацию из другой таблицы и сравнивать значения в шести разных столбцах (фондовый exp, взаимные фонды exp и т. Д.) И возвращать только самое высокое значение шести для этой конкретной записи.

Это не проблема. Проблема в том, что во время выполнения мой запрос на поиск инвестиций exp не обязательно знает идентификатор учетной записи. Учитывая, что сканирование таблицы принесло более полумиллиона клиентов, это не вариант. Так что я пытаюсь отредактировать копию моего основного динамически построенного запроса, но вместо того, чтобы возвращать 30 + столбцов, он просто вернет 2, accountid и experienceid (это PK для таблицы опыта), поэтому я может сделать сделку по фильтрации.

Некоторые из вас могут определить динамический SQL, немного отличающийся от меня. Мой запрос – это строка, которая в зависимости от аргументов, отправленных моей процедуре, части предложения where будут включены или выключены переключателями. В итоге я выполняю, все это делается на стороне сервера, все веб-приложение отправляет массив аргументов в мой proc.

Мой упрощенный код выглядит примерно так:

declare @sql varchar(8000) set @sql = 'select [columns] into #tempTable from [table] [table joins]' + @dynamicallyBuiltWhereClause exec(@sql) 

после этой части я пытаюсь использовать #tempTable для процесса фильтрации инвестиционного опыта, но я получаю сообщение об ошибке, указывающее, что #tempTable не существует.

Любая помощь будет очень признательна.

Проблема заключается в том, что область вашей временной таблицы существует только в инструкции exec (). Вы можете преобразовать вашу временную таблицу в «глобальную» таблицу темп, используя 2 символа хэша -> ## tempTable. Однако мне интересно, почему вы используете переменную @dynamicallyBuiltWhereClause для генерации вашего оператора SQL.

Я делал то, что вы делали в прошлом, но добился успеха в создании SQL из приложения (используя C # для генерации моего SQL).

Кроме того, вы можете посмотреть в Табличные переменные. Я видел некоторые странные экземпляры, использующие временные таблицы, где приложение повторно использует соединение, а временная таблица из последнего запроса все еще существует.