我有做爲了塗改存儲過程改變表
- 與單個列創建表在表
- 添加更多的列表
- 插入數據下面的程序
第一次執行SP後,該表已存在。因此,如果我在SP中進行了更改並嘗試保存它,它將在插入步驟中引發錯誤,說 「列名或提供的值數量與表定義不匹配」。
有什麼辦法可以禁用這個'檢查'並以某種方式更新SP而不必刪除表嗎?
編輯:這個SP應該每年只運行一次,生成一個報告。直到明年纔有人看。實際上,有一組5-6個存儲過程生成所有表(大約25個),然後用於生成報告。所以,當在SP中進行更改時,這些表將被刪除,並且所有SP再次運行一次。
例:
CREATE proc sp_temp
AS
BEGIN
BEGIN TRY DROP TABLE TX END TRY BEGIN CATCH END CATCH
CREATE TABLE TX (ID INT)
DECLARE @I INT =0
WHILE (@I<=10)
BEGIN
INSERT INTO TX VALUES (@I)
SET @I += 1
END
ALTER TABLE TX ADD COL1 VARCHAR(10)
INSERT INTO TX VALUES (11, 'SOME TEXT');
END
EDIT2:表被創建之前丟棄。 但現在我的問題是:SSMS識別錯誤即。列數不匹配和提供值的數量不匹配,但爲什麼看不到表格被丟棄?
這是什麼意思。你期待存儲過程只執行一次嗎?那爲什麼要使用存儲過程? –
請發佈您的代碼。您必須使用IF語句來防止重新創建表格 –
糟糕的設計氣味 –