Синтаксис объявления временной таблицы в модульном тесте SQL Server - PullRequest
0 голосов
/ 27 февраля 2019

Я создаю модульный тест SQL Server для хранимой процедуры.У меня большая часть завершена, но я получаю ошибку

Неверный синтаксис рядом со словом TABLE

из моего автоматически сгенерированного метода C # test.Я считаю, что я неправильно объявляю временную таблицу.

Вот часть моего кода SQL, в которой я объявляю временную таблицу.

-- Database unit test for dbo.AutoExpireSchedule
DECLARE  @RC                        as INT,
         @Docid                     as VARCHAR(20),
         @NextExpTime               as DATETIME,
         @NextAssignTime            as DATETIME,
         @Appr                      as INT,
         @IsManualAssign            as BIT,
         @preparer                  as INT,
         @status                    as VARCHAR(5),
         @curTime                   as DATETIME,
         @Approut                   as INT,
         @date1                     as DATETIME,
         @date2                     as DATETIME,
         @nextExpDate               as DATETIME,
         @nextAssignDate            as DATETIME,
         @gap                       as INT,
         @RejectedCount             as INT,
         @TotalReqdAssnCnt          as INT,
         @folder                    as VARCHAR(20),
         @DfltAppr                  as INT,
         @AppInstID                 as INT,
         @tempTable                 as TABLE (id INT identity(1, 1), @DocId, @NextExpTime, @NextAssignTime, @Appr, @IsManualAssign),
         @NO_RESPONSE_FROM_PROVIDER as INT = 3;

Я также пытался:

 @tempTable as TABLE (id INT identity(1, 1), DocId int, NextExpTime datetime, NextAssignTime datetime, Appr int, IsManualAssign bit),

@ EDIT:

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

             @tempTable as TABLE (id INT identity(1, 1), DocId VARCHAR(20), NextExpTime DATETIME, NextAssignTime DATETIME, Appr INT, IsManualAssign BIT),

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы действительно делаете это неправильно.Здесь вы объявляете табличную переменную .Ваша табличная переменная должна выглядеть следующим образом в зависимости от вашего кода:

DECLARE @tempTable TABLE (
    id int IDENTITY(1, 1)
  , DocId varchar(20)
  , NextExpTime datetime
  , NextAssignTime datetime
  , Appr int
  , IsManualAssign bit
)

Итак ... нет @ знака перед столбцами в табличной переменной, выбрасывайте ключевые слова AS и всетипы должны быть явно объявлены.

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

Это может быть не тем, чего вы хотите достичь - если такПожалуйста, добавьте больше информации к вашему вопросу.

0 голосов
/ 27 февраля 2019

Вы хотите:

DECLARE @TableVariable table(id INT identity(1,1),
                             DocId int,
                             NextExpTime datetime,
                             NextAssignTime datetime,
                             Appr int,
                             IsManualAssign bit);

Нет AS после имени переменной, и перед ней стоит DECLARE, как и у других переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...