即使表中存在所有列,也会出现错误“无效列名”

时间:2019-06-19 04:21:08

标签: sql-server

我已经使用select * into语句在存储过程中创建了#table。该表显示正常,但是当我开始使用if语句时,它显示“ Invalid Column Name”。为什么会发生这种情况,列在我创建的表中都可用。

谁能告诉我是什么问题?

我尝试使用select * from #table,所有列及其值都存在。

我还尝试了update #Table并更改了几个值。到这里为止都很好。

仅当我使用if语句时,它显示错误,

UPDATE #SMSB_temp
SET Status = '09'
WHERE RenewStatus = '03'

IF NOT EXISTS (SELECT * FROM #SMSB_temp)
BEGIN
    IF Status = '09' AND AvailableBalance > @SMSBRenewalCharges
    BEGIN

    END
END

1 个答案:

答案 0 :(得分:1)

您必须编写如下的IF语句。您的代码当前未引用IF语句中的任何表。我希望您要检查是否存在状态='09'和AvailableBalance> @SMSBRenewalCharges的行。

DECLARE @Check bit

SET @check = (SELECT TOP 1 1
              FROM #SMSB_temp 
              WHERE Status = '09' AND AvailableBalance > @SMSBRenewalCharges)

IF @check = 1
BEGIN
   ...
END 

正如@squirrel在注释中建议的那样,您可以简单地编写如下:

IF EXISTS ( SELECT TOP 1 1
              FROM #SMSB_temp 
              WHERE Status = '09' AND AvailableBalance > @SMSBRenewalCharges)
BEGIN
 ...
END