创建视图时,关键字“ DECLARE”附近的语法不正确

时间:2018-10-08 10:05:51

标签: sql sql-server ssms

我无法在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 ...

然后,当我尝试将其保存到视图中时,出现以下错误:

  

关键字“ DECLARE”附近的语法不正确

您能告诉我我做错了吗,谢谢。

3 个答案:

答案 0 :(得分:0)

错误消息很清楚,您的语法不正确,请参见 CREATE VIEW 语法和示例。

如果您确实需要使用这些变量,则可以使用 StoredProcedure ,甚至可以使用 function

答案 1 :(得分:0)

您是正确的。 VIEW中不允许使用局部变量。

您可以在表值函数中设置局部变量,该变量将返回结果集(就像视图一样)。

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

答案 2 :(得分:0)

您无法在此脚本上创建View。看一下以下主题:

CREATE VIEW (Transact-SQL)

您必须在sql服务器中创建Stored ProcedreMulti-Statement Table-Valued Function

CREATE PROCEDURE (Transact-SQL)

CREATE FUNCTION (Transact-SQL)

重点是,您可以在selectMulti-Statement Table-Valued Function,但是如果要在Stored Procedure上选择,则可以使用开放式查询。但是,我建议您不要使用开放式查询。