天天看点

让你提前认识软件开发(35):如何修改SQL脚本以完成需求?

第2部分 数据库SQL语言
如何修改SQL脚本以完成需求?

         SQL脚本的修改和C语言代码的修改流程是一样的,都要遵循以下步骤:
        第一步,阅读需求,弄清楚自己要完成什么功能。
        第二步,对照需求阅读原代码,找到本次要修改的内容的大致位置。
(包括:添加、删除和修改等),将本次的功能添加上去。
        第四步,对修改后的代码进行测试,验证新增功能是否满足需求。
 
SQL脚本进行修改。
        1. 需求描述
        在某软件版本中,需要完成如下需求:
        (1) 在原有媒体类型的基础上新增一种媒体类型4,其功能属性编号为4。
        (2) 要查询信箱中存储的新增媒体类型的用户总数,并判断是否达到最大存储限额。
        (3) 如果最大存储限额为1000,则表明不限制信箱所存储的新增的媒体类型的用户总数,即不用判断信箱是否满。
        (4) 如果最大存储限额为0,则表明信箱不允许接收新增的媒体类型的邮件。
 
        2. 寻找SQL脚本的修改位置
(脚本是基于Sybase数据库实现):
……
……
if (@mailtype=1)
begin
    select @functionid = 1
end
else if (@mailtype=2)
begin
    select @functionid = 1
end
else if(@mailtype=3)
begin
    select @functionid = 3
end

select @tmpstr = funvalue from tb_cosprofile where cosinid = @mboxserver and functionid = @functionid

if (@mailcnt < @maxcnt)
begin
    select @isfull = 0
end
else
begin
    select @isfull = 1
end
……
……
 
         3. 一步一步完成需求
        找到了代码的修改位置之后,下面就要来实现需求了。
4,其功能属性编号为4。
        修改之后的代码如下所示:
……
……
if (@mailtype=1)
begin
    select @functionid = 1
end
else if (@mailtype=2)
begin
    select @functionid = 1
end
else if(@mailtype=3)
begin
    select @functionid = 3
end
-- zzx add 20140709 begin
else if(@mailtype=4)
begin
    select @functionid = 4
end
-- zzx add 20140709 end
……
……
 
        第二步:要查询信箱中存储的新增媒体类型的用户总数,并判断是否达到最大存储限额。
        对照原代码,该需求可采用之前的实现,本次不做修改。
 
1000,则表明不限制信箱所存储的新增的媒体类型的用户总数,即不用判断信箱是否满。如果最大存储限额为0,则表明信箱不允许接收新增的媒体类型的邮件。
        在修改代码的时候,我们有一个原则,那就是尽量不要改变之前的流程。因此,为了完成该需求,考虑采用“if…else”语句,对本次新增的媒体类型进行单独处理。
       修改之后的代码如下所示:
……
……
-- zzx add 20140709 begin
if (@functionid = 4)
begin
    if (@maxcnt = 0)
    begin
        select @isfull = 2        -- 对于这种情况,要返回一个特殊的值
    end
    else if (@maxcnt = 1000)
    begin
        select @isfull = 0
    end
    else
    begin
         if (@mailcnt < @maxcnt)
         begin
        
         end
        
         begin
        
         end
    end
end
-- zzx add 20140709 end
else
begin
    if (@mailcnt < @maxcnt)
    begin
        select @isfull = 0
    end
    else
    begin
        select @isfull = 1
    end
end
……
……
 
        经过以上三步的修改之后,最后的脚本如下所示:
……
……
if (@mailtype=1)
begin
    select @functionid = 1
end
else if (@mailtype=2)
begin
    select @functionid = 1
end
else if(@mailtype=3)
begin
    select @functionid = 3
end
-- zzx add 20140709 begin
else if(@mailtype=4)
begin
    select @functionid = 4
end
-- zzx add 20140709 end
 
select @tmpstr = funvalue from tb_cosprofile where cosinid = @mboxserver and functionid = @functionid
 
-- zzx add 20140709 begin
if (@functionid = 4)
begin
    if (@maxcnt = 0)
    begin
        select @isfull = 2        -- 对于这种情况,要返回一个特殊的值
    end
    else if (@maxcnt = 1000)
   
   
   end
   else
  
         if (@mailcnt < @maxcnt)
        begin
            select @isfull = 0
       end
       else
       begin
    
       end
 
end
-- zzx add 20140709 end
else
begin
    if (@mailcnt < @maxcnt)
    begin
        select @isfull = 0
    end
    else
    begin
    select @isfull = 1
    end
end
……
……
 
        4. 对修改之后的代码进行测试
       代码修改完后,我们还要进行充分的自测之后才能提交版本。
SQL脚本的测试,需要构造一些数据,待脚本执行完之后,查看是否按照需求要求执行了特定的流程。
 
SQL脚本的过程中,我们要注意以下事项:
       (1) 在动手修改代码之前,一定要将需求理解到位,弄清楚要实现的功能到底是什么。
       (2) 在修改代码的过程中,要严格参照编程规范执行。对于改动的代码,一定要添加注释。
       (3) 代码的修改要遵循最小改动原则,即我们在尽量不改变原程序流程的前提下来实现新的功能。
       (4) 在代码修改完之后,一定要进行充分的自测。这个与C语言程序的测试是一样的道理。
 
      “实践出真知”,只有通过不断的实践,我们才能够提高自己的编程能力,才能够掌握需求实现的正确而快速的方法。      

继续阅读