关键字“Truncate”附近的语法不正确。必须声明标量变量'@table'

时间:2012-08-23 23:05:37

标签: sql sql-server visual-studio-2010

我对SQL很新,我不确定为什么以下代码会在标题中产生错误:

CREATE PROCEDURE Truncate (@table varchar(50))
AS
BEGIN
    SET NOCOUNT ON;
    EXEC ('TRUNCATE TABLE ' + @table);
END

4 个答案:

答案 0 :(得分:4)

由于Truncate是保留字,因此不能在未引用的过程名称中使用它。你可以这样做:

CREATE PROCEDURE dbo.[Truncate] (@table varchar(50)) 
AS BEGIN     
  SET NOCOUNT ON;     
  EXEC ('TRUNCATE TABLE ' + @table); 
END 

但是当你运行它时,你不得不说

dbo.[Truncate] 'tablename'

或者将过程名称更改为TruncateTable:

CREATE PROCEDURE dbo.TruncateTable (@table varchar(50)) 
AS BEGIN     
  SET NOCOUNT ON;     
  EXEC ('TRUNCATE TABLE ' + @table); 
END 

然后你可以把它称为

EXEC TruncateTable 'tablename'

答案 1 :(得分:3)

TRUNCATE是一个关键字,因此您应该将您的程序命名为其他内容,例如:

CREATE PROCEDURE TruncateTable (@table varchar(50))
AS
BEGIN
    SET NOCOUNT ON;
    EXEC ('TRUNCATE TABLE ' + @table);
END

答案 2 :(得分:3)

TRUNCATE是SQL Server中的保留或关键字。只需将名称更改为其他名称即可。避免像[TRUNCATE]

那样放置[]

答案 3 :(得分:1)

为该程序使用其他名称而不是Truncate,例如使用trucateMyTable

<强>原因:

Truncate是关键词

变量/过程/函数名称不能是关键字。