SQL Server:列名无效

Kam*_*med 64 sql sql-server stored-procedures sql-server-2008

我正在修改现有的SQL Server存储过程.我在表中添加了两个新列,并修改了存储过程以便选择这两个列.尽管SQL Server Keeps表中提供了这些列,但却出现此错误:

列名称"INCL_GSTAMOUNT"无效

在此输入图像描述

谁能告诉我这里有什么问题?

Ric*_*Ric 173

每当发生这种情况时,我按Ctrl+ Shift+ R刷新intellisense,关闭查询窗口(必要时保存),然后启动一个通常运行良好的新会话.

  • 我发现键击足够了(非常感谢!) - 无需关闭查询窗口 (9认同)
  • 谢谢你,这对经过几个小时的压力确实有帮助。 (2认同)

小智 55

如果将字符串放在双引号而不是单引号中也会发生.

  • 使用双引号时,它被解析为列名而不是字符串。如果该列名不可用(字符串通常不作为列存在),您将收到此错误。 (6认同)
  • 呃……谢谢!如此愚蠢。使用双引号中的日期查询日期范围时遇到了这个问题。 (3认同)
  • 这就是我的原因 - 你能解释一下原因吗 (2认同)

dus*_*88c 10

如果您要更改表列并立即更新表,包括同一脚本中的新列。确保GO在 alter table 代码行之后使用命令,如下所示。

ALTER TABLE Location 
ADD TransitionType SMALLINT NULL
GO   

UPDATE Location SET TransitionType =  4

ALTER TABLE Location 
    ALTER COLUMN TransitionType SMALLINT NOT NULL
Run Code Online (Sandbox Code Playgroud)


gth*_*huo 8

我来到这里是因为我收到了这个错误。原因是我在为 WHERE 条件给出值时使用双引号 (") 而不是单引号 (')。写这个是为了将来的我。


Cha*_*ert 5

此错误也可能发生在封装的 SQL 语句中,例如

DECLARE @tableName nvarchar(20) SET @tableName = 'GROC'

声明 @updtStmt nvarchar(4000)

SET @updtStmt = '更新 tbProductMaster_' +@tableName +' SET Department_str = ' + @tableName exec sp_executesql @updtStmt

才发现缺少引号来进一步封装参数“@tableName”,如下所示:

SET @updtStmt = '更新 tbProductMaster_' +@tableName +' SET Department_str = ''' + @tableName + ''' '

谢谢