【发布时间】:2017-03-16 21:05:24
【问题描述】:
我们如何改变存储过程中的视图?
create procedure createviewupdatepenaltypointsconsecutive
as
begin
alter VIEW consecutive
as
WITH cte as (
SELECT *,
LAG([pointsRewarded], 1) OVER (PARTITION BY [EmployeeID] ORDER BY [WeekNumber]) as prev1_points,
LAG([pointsRewarded], 2) OVER (PARTITION BY [EmployeeID] ORDER BY [WeekNumber]) as prev2_points,
LAG([pointsRewarded], 3) OVER (PARTITION BY [EmployeeID] ORDER BY [WeekNumber]) as prev3_points
FROM week1
)
SELECT *,
CASE WHEN [pointsRewarded] = -10 AND prev1_points = -10 AND prev2_points = -10 AND prev3_points = -10
THEN -200
WHEN [pointsRewarded] = -10 AND prev1_points = -10 AND prev2_points = -10
THEN -100
WHEN [pointsRewarded] = -10 AND prev1_points = -10
THEN -50
ELSE 0
END penalty
FROM cte
end
M 收到此错误: 消息 156,级别 15,状态 1,过程 createviewupdatepenaltypointsconsecutive,第 4 行 关键字“VIEW”附近的语法不正确。 消息 319,级别 15,状态 1,过程 createviewupdatepenaltypointsconsecutive,第 8 行 关键字“with”附近的语法不正确。如果这个语句是一个公用表表达式、一个 xmlnamespaces 子句或一个更改跟踪上下文子句,则前面的语句必须以分号结束。
【问题讨论】:
-
在这个过程中重新创建视图有什么意义?视图定义似乎没有以任何方式改变,存储过程没有应用任何逻辑,也没有接受任何参数。
-
我试图解决的问题需要我将视图放在存储过程中。
标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2012