我有做为了涂改存储过程改变表
- 与单个列创建表在表
- 添加更多的列表
- 插入数据下面的程序
第一次执行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语句来防止重新创建表格 –
糟糕的设计气味 –