[英]Stored Procedure refuses to delete column that it creates
我創建了一個存儲過程,用於刷新表中的數據。 它首先重新加載整個表。 接下來,應用幾個過濾器。 (示例:“模型”列必須等於“ 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運行?
如果我理解正確,則可以使用動態SQL:
exec sp_executesql 'ALTER TABLE dbo.Table DROP COLUMN Model';
從SQL Server中的表中刪除任何列的語法是
ALTER TABLE TableName DROP COLUMN ColumnName ;
這可能是有問題的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.