неверный синтаксис рядом с ключевым словом "DECLARE" при создании представления - PullRequest
0 голосов
/ 08 октября 2018

У меня проблемы с созданием View в SSMS.Если я запускаю запрос, он работает нормально, но я не могу сохранить его как представление.Вот первые несколько строк, поскольку я не думаю, что остальные будут слишком релевантными:

DECLARE @dayName VARCHAR(9)
DECLARE @current INT
DECLARE @previous INT
SET @dayName = DATEName(DW, GETDATE())

IF
(@dayName = 'Saturday') 
BEGIN
SET @current = 1
SET @previous = 2
END

ELSE IF
(@dayName = 'Sunday') 
BEGIN
SET @current = 2
SET @previous = 3
END

ELSE 
IF(@dayName = 'Monday')
BEGIN
SET @current = 0
SET @previous = 3
END


SELECT DATE, BRAND, MODEL, EAN, SUPPLIER_CATEGORY, FAMILY, FAMILY_PER_EAN, SUM(UNITS) AS UNITS
FROM ...

Затем, когда я пытаюсь сохранить его в View, я получаю следующую ошибку:

Неверный синтаксис рядом с ключевым словом "DECLARE"

Можете ли вы дать мне знать, что я делаю неправильно. Спасибо.

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

Вы правы.Локальные переменные не допускаются в VIEW.

Вы можете установить локальную переменную в табличной функции, которая возвращает набор результатов (как это делает представление).

http://msdn.microsoft.com/en-us/library/ms191165.aspx

0 голосов
/ 08 октября 2018

Вы не можете создать View по этому сценарию.Взгляните на следующую тему:

CREATE VIEW (Transact-SQL)

Вам необходимо создать Stored Procedre или Multi-Statement Table-Valued Function на сервере sql:

CREATE PROCEDURE (Transact-SQL)

CREATE FUNCTION (Transact-SQL)

Дело в том, что вы можете select on Multi-Statement Table-Valued Function, но если вы хотите выбрать Stored Procedure, используйте открытый запрос.Тем не менее, я предлагаю вам не использовать открытый запрос.

0 голосов
/ 08 октября 2018

Сообщение об ошибке ясно, у вас неправильный синтаксис, см. CREATE VIEW синтаксис и примеры.

Если вам действительно нужно использовать эти переменные,Вы можете использовать StoredProcedure или даже function.

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