我使用procedure
作为SQL Server中表的名称。我现在无法做任何事情并得到错误。
我不知道它是一个保留的关键字。
我该怎么办?
答案 0 :(得分:3)
当您使用方括号括起来时,可以在SQL Server中为表和字段名称使用保留关键字。 所以
drop table [procedure];
应该解决问题。另一个选项是在对象资源管理器中找到表dbo.procedure,右键单击它,单击“删除”并选择“确定”。
答案 1 :(得分:1)
您可以在动态SQL中使用括号[]
或QUOTENAME()
。但是使用RESERVED WORDS作为表,列名称是不好的做法。
答案 2 :(得分:0)
您应该将表Rename
更改为反映其使用情况的非保留关键字。要使用类似的东西重命名表格。
EXEC sp_rename '[procedure]','MyTable','OBJECT'
您可以在静态SQL中使用[]
继续使用(不推荐)现有名称
SELECT <ColumnName> FROM [Procedure]
或者使用QUOTENAME()
,在Dynamic SQL
的情况下需要手动添加表名。像这样的东西。
DECLARE @TableName NVARCHAR(10) = 'Procedure'
DECLARE @SQL NVARCHAR(500) = N'SELECT * FROM ' + QUOTENAME(@TableName)
EXEC sp_executesql @SQL
您可以找到保留字here的列表。