SQL Server условного выбора во временную таблицу - PullRequest
0 голосов
/ 20 октября 2010

Я работаю в SQL Server 2008 и пытаюсь выбрать временную таблицу на основе определенного условия ... для отчета мне нужно от до 18% записейбыть определенного типа продукта.

if ((@totalRecords * .18) > @productTypeCount)
    select * into #tmpLP_REIT
    from myTable where productType = @productType
else
    select top 18 percent * into #tmpLP_REIT
    from myTable where productType = @productType

Я продолжаю получать сообщение об ошибке "в базе данных уже есть объект с именем" #tmpLP_REIT ", хотя я знаю, что его там нет, потому что когда я пытаюсьотбросьте такую ​​таблицу, она указывает, что ее не существует. Я также получаю эту ошибку в предложении else.

Кажется, что он игнорирует мой оператор if и проходит прямо через создание первой таблицы, а затем пытается создать ее снова.какие-либо предложения?

Пожалуйста, и спасибо заранее.

1 Ответ

1 голос
/ 20 октября 2010

Этот код в цикле? .. который объяснил бы ошибку, если бы она произошла во второй раз. Если нет, то программа проверки синтаксиса должна просто задыхаться, потому что она видит 2 запроса, создающих одну и ту же таблицу, не понимая, что это условно.

Одним из решений было бы сначала создать таблицу, а затем изменить синтаксис этих 2 запросов на insert into запросы.

Другое решение - использовать динамический SQL ... построить правильный запрос в условном выражении, а затем выполнить его впоследствии. Это должно пройти проверку, которую вы сейчас запускаете.

...