Уже есть объект с именем ## ObjectName - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть хранимая процедура, в которой я создаю таблицу, если таблица не существует в данный момент в коде (попытался сначала выбрать top 0 * из другой таблицы, но результат тот же).

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

Из-за этого моя идея быладовольно просто создать его, если он не существует с кодом для каждого выбора.

Но когда я пытаюсь запустить его, я получаю:

Уже существует объект с именем '##TOTAL_SELECTION 'в базе данных.

Может кто-нибудь сказать мне, что я делаю неправильно или как я могу обойти это?Для меня это выглядит очень логично, потому что таблица создается только в том случае, если она не существует.

 IF (SELECT COUNT(*) FROM TEMPDB.SYS.OBJECTS WHERE NAME = '##TOTAL_SELECTION' AND TYPE = 'U' ) = 0
    BEGIN
         CREATE TABLE ##TOTAL_SELECTION (ID NUMERIC(14,0), TYPE VARCHAR(100)  )
    END    

    --INSERT DATA INTO THE TABLE

    /* SOME OTHER CODE */

     IF (SELECT COUNT(*) FROM TEMPDB.SYS.OBJECTS WHERE NAME = '##TOTAL_SELECTION' AND TYPE = 'U' ) = 0
    BEGIN
         CREATE TABLE ##TOTAL_SELECTION (ID NUMERIC(14,0), TYPE VARCHAR(100)  )
    END    

    --INSERT DATA INTO THE TABLE

    /* SOME moreCODE */

1 Ответ

0 голосов
/ 04 апреля 2019

Если вам нужно снова использовать таблицу для вставки других данных, вы также можете выполнить усечение, например:

  --This will remove all the content of your table. 
  truncate table ##TOTAL_SELECTION

вместо того, чтобы пытаться воссоздать его, так как вы не можете создать таблицу (даже временную) несколько раз с одним и тем же именем. Вы можете попытаться обмануть это, добавив числа в имени временных таблиц (## Total_Selection1, ## Total_Selection2 и т. Д.)

Также, пожалуйста, используйте условие ниже вместо select count(*) ... = 0:

IF OBJECT_ID('tempdb..##TOTAL_SELECTION ' , 'U') IS NOT NULL
   drop TABLE ##TOTAL_SELECTION 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...