1

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

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

4 回答 4

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'
于 2012-08-23T23:11:32.070 回答
3

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

CREATE PROCEDURE TruncateTable (@table varchar(50))
AS
BEGIN
    SET NOCOUNT ON;
    EXEC ('TRUNCATE TABLE ' + @table);
END
于 2012-08-23T23:11:49.147 回答
3

TRUNCATE 是 SQL Server 中的保留关键字或关键字。只需将名称更改为其他名称。避免像 [TRUNCATE] 那样将 [ ] 放在它周围

于 2012-08-23T23:11:57.683 回答
1

Use some other name for the procedure instead of Truncate e.g. use trucateMyTable

Reason:

Truncate is a key word and

A variable/procedure/function name can not be a keyword.

于 2012-08-23T23:18:19.297 回答