存储过程的修改

问题描述:

通常我们在对一个系统再开发时,因为业务的扩展需要在已创建的表中新增字段,也需要修改相应的存储过程,而存储过程却是外面客户正在大量使用。这时候一不小心就会影响到客户。

 

举例:就拿我们平常最常用的用户表来说吧。

 

已有条件

Tab_UserInfo

存储过程: Proc_UserInfo_Insert (前提 UsrI_ID 是自动增长)

--=================================================--

-- Author:     mocklystone

--Createtime:  2009-11-28

--Describ:     添加用户信息

--=================================================--

create procedure Proc_UserInfo_Insert

@username nchar ( 10),

@userpwd nchar ( 10)

as

insert into Tab_UserInfo( UsrI_LoginName, UsrI_Loginpwd)

values ( @username, @userpwd)

 

业务需求改动

假如我想给用户添加类型,于是需要添加字段 usrI_Type ,且该字段必须有值。

 

那么就会出现两种情况:

1、  用户表 Tab_UserInfo 有数据,如果 usrI_Type 不允许空的话,无法在表中插入此字段。

因为如果设为不允许空的话,则其它以前的数据新增的这个字段就没有相应的值,所以不允许插入此字段)

2、  用户表 Tab_UserInfo 无数据,则不会出现上述情况。

 

接下来重点讲第一种情况的解决方法。

 

先在用户表 Tab_UserInfo 插入 usrI_Type 字段,属性设置允许为空,然后新建查询

update Tab_UserInfo set UsrI_Type= 0

然后再修改表 Tab_UserInfo UsrI_Type 字段属性,为不允许为空,即可。

 

存储过程修改:

--=================================================--

-- Author:        mocklystone

--Createtime:     2009-11-28

--Describ:        添加用户信息

--LastUPdateTime: 2009-11-28 mocklystone 添加参数 @usertype

--=================================================--

create procedure Proc_UserInfo_Insert

@username nchar ( 10),

@userpwd nchar ( 10),

@usertype int = 0

as

insert into Tab_UserInfo( UsrI_LoginName, UsrI_Loginpwd, UsrI_Type)

values ( @username, @userpwd, @usertype)

 

最大的不同在于存储过程中的 @usertype int = 0 是有默认值的。这样就会使外面正在使用没有参数 @usertype 存储过程 Proc_UserInfo_Insert 的用户不受到影响。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值