我创建了一个存储过程来刷新表中的数据。它首先重新加载整个表。接下来,应用几个过滤器。 (例如:'Model'列必须等于'W';所有带有'B'模型的行都将被删除。)这是在加载表之后(而不是在期间)发生的,因为我想记录删除了多少行因为每个过滤器。应用过滤器后,某些列在每一行中都包含相同的值(其他值在过滤过程中被删除)。这些列现在没用了,所以我想删除它们。
这对SQL Server来说似乎有问题。当给出执行SP的命令时,它指示它应该在其最后步骤中删除的列当前不存在并拒绝运行。这在技术上是正确的,列目前不存在,但它们将由SP本身创建。
一些模型代码:
CREATE PROCEDURE dbo.Procedure AS (
DROP TABLE dbo.Table
SELECT * INTO dbo.Table FROM dbo.View
INSERT INTO dbo.Log VALUES (GETDATE(),(SELECT COUNT(1) FROM dbo.Table))
DELETE FROM dbo.Table WHERE Model <> 'W'
INSERT INTO dbo.Log VALUES (GETDATE(),(SELECT COUNT(1) FROM dbo.Table))
ALTER TABLE dbo.Table DROP COLUMN Model
)
执行时的错误代码:
[2016-09-02 12:25:20] [S0001][207] Invalid column name 'Model'.
如何规避此问题并让SP运行?