我对SQL很新,我不确定为什么以下代码会在标题中产生错误:
CREATE PROCEDURE Truncate (@table varchar(50))
AS
BEGIN
SET NOCOUNT ON;
EXEC ('TRUNCATE TABLE ' + @table);
END
答案 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
是关键词
变量/过程/函数名称不能是关键字。