背景:在业务表中,有个字段ChangeType的字段类型为varchar(1),用于标记计划调整类型,当前业务这个字段已存放数字0到9转成的字符串,现在需要新加一个计划类型,而在后台业务代码中又存在将字符串转成数字的业务逻辑判断,无法使用字母去标记。
解决方法:
一,更改表字段,将长度改成2
缺陷:数据库中存在大量已这个字段作为参数的函数和存储过程,都需要调整。
查找使用此字段的函数和存储过程的SQL代码:
SELECT sm.object_id, OBJECT_NAME(sm.object_id) AS object_name, o.type, o.type_desc, sm.definition
FROM sys.sql_modules AS sm
JOIN sys.objects AS o ON sm.object_id = o.object_id
where sm.definition like '%ChangeType%' --collate SQL_Latin1_General_CP1_CI_AS
ORDER BY o.type;