关键字'truncate'附近的语法不正确。在查看

问题描述:

我收到错误“关键字'truncate'附近的语法错误。”和不知道什么是错这里的语法,这不是明显对我......可能是一些愚蠢的,但我需要另一套的眼睛:关键字'truncate'附近的语法不正确。在查看

ALTER VIEW [dbo].[vw_All_Events] 
AS 

truncate table Event 

Select [event_id] 
     ,[site_id] 
     ,[autogenerated] 
     ,[creation_date] 
     ,[last_update_date] 
from Event 

GO 
+2

你想要做什么?截断在这个上下文中没有任何意义 – 2012-08-17 05:16:15

+0

即使这个语法是有效的并且可行 - 那么你的视图永远不会显示任何数据(因为它刚刚被截断)。那么你究竟想在这里完成什么?似乎没有什么意义.... – 2012-08-17 05:43:39

+0

只是试图清除表,因为在SSIS中使用此视图作为选择数据插入到同一个表中。 – PositiveGuy 2012-08-17 05:44:14

一个视图只允许在AS之后的单个语句,它必须是数据检索(返回一个行集)。它不能是一种不同的类型,包括数据定义,数据修改,程序,声明或其他。

可以用存储过程或用户定义的函数(但不能在函数中执行DDL & DML)执行这些操作。

详细地说,存储过程允许流程控制语句,如IF THEN ELSE BEGIN END WHILE RETURN。你可以使用DML来更新,删除和插入。您可以使用DDL来创建和删除表和索引,添加列和约束等等。您可以返回多个行集。您可以执行动态SQL。

你想完成什么?

+0

是啊我只是让我的SSIS交易调用特效,这样我可以清除表格然后调用我的视图(选择数据)... – PositiveGuy 2012-08-17 05:45:54

+2

为什么你需要一个视图,只用于返回一个空的行集? – ErikE 2012-08-17 05:47:07

只能有意见select语句。因此,'truncate'是一个无效的命令。

TRUNCATE不适用于视图。

看看这个link

+1

Tsql,不是mysql? – ErikE 2012-08-17 05:20:54

更好的方法,你使用存储过程,而不是视图。

有你写多个语句,也得到输出。