金蝶云星空表结构删除字段存储过程设计

发布时间 2023-09-05 17:54:08作者: lanrenka

业务背景:

数据库模型设计时命名错误,点击了保存,重新换了正确的字段后错误的数据字段还存储数据库,且删除字段前要先查询约束并删除约束后才能删除字段成功。每一次错误都是一次重复工作量。

 

解决方案:

设计一个存储过程,传入表名和字段名,先查询该字段约束,存在先删除,然后再删除字段。

 

存储过程:

--创建存储过程
CREATE  PROCEDURE XHWT_PR_BD_DROPCOLUMN
@tableName nvarchar(100),
@columnName  nvarchar(100)
AS
--declare @tableName nvarchar(100);--表名
--declare @columnName nvarchar(100);--列名
declare @cnt nvarchar(100);
declare @sqlcmd nvarchar(1024);
--set @tableName='T_SAL_ORDER'
--set @columnName='F_TEXT'
--删除约束
select @cnt= b.name from sysobjects b join syscolumns a on b.id = a.cdefault where a.id = object_id(@tableName) and a.name = @columnName
set @sqlcmd = 'ALTER TABLE '+ @tableName +' DROP constraint ' + @cnt;
exec sp_executesql @sqlcmd
--删除字段
SET @sqlcmd='ALTER TABLE '+@tableName+' DROP COLUMN '  +@columnName;
exec sp_executesql @sqlcmd
go

 

测试:

EXEC XHWT_PR_BD_DROPCOLUMN 'T_SAL_ORDER','F_TEXT'
EXEC XHWT_PR_BD_DROPCOLUMN 'T_SAL_ORDER','F_DECIMAL'