第2部分 数据库SQL语言

怎样改动SQL脚本以完毕需求?

SQL脚本的改动和C语言代码的改动流程是一样的,都要遵循下面步骤:

        第一步,阅读需求。弄清楚自己要完毕什么功能。

        第二步,对比需求阅读原代码。找到本次要改动的内容的大致位置。

        第三步,对代码进行改动(包含:加入、删除和改动等),将本次的功能加入上去。

        第四步,对改动后的代码进行測试,验证新增功能是否满足需求。

本文以一个实际的需求完毕过程为例。具体说明怎样对SQL脚本进行改动。

,其功能属性编号为4。

(2) 要查询信箱中存储的新增媒体类型的用户总数。并推断是否达到最大存储限额。

(3) 假设最大存储限额为1000,则表明不限制信箱所存储的新增的媒体类型的用户总数。即不用推断信箱是否满。

(4) 假设最大存储限额为0,则表明信箱不同意接收新增的媒体类型的邮件。

。其功能属性编号为4。

改动之后的代码例如以下所看到的:

……

……

。则表明不限制信箱所存储的新增的媒体类型的用户总数,即不用推断信箱是否满。假设最大存储限额为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

select @isfull = 0

end

else

begin

select @isfull = 1

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)

begin

select @isfull = 0

end

else

begin

if (@mailcnt < @maxcnt)

begin

select @isfull = 0

end

else

begin

select @isfull = 1

end

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语言程序的測试是一样的道理。

“实践出真知”,仅仅有通过不断的实践,我们才可以提高自己的编程能力,才可以掌握需求实现的正确而高速的方法。

(本人微博:

topnav=1&wvr=5">http://weibo.com/zhouzxi?

topnav=1&wvr=5,微信号:245924426。欢迎关注。)

让你提前认识软件开发(35):怎样改动SQL脚本以完毕需求?的更多相关文章

  1. 让你提前认识软件开发(23):怎样在C语言中运行shell命令?

    第1部分 又一次认识C语言 怎样在C语言中运行shell命令? [文章摘要] Linux操作系统具备开源等诸多优秀特性,因此在很多通信类软件(主流开发语言为C语言)中,开发平台都迁移到了Linux上, ...

  2. 让你提前认识软件开发(19):C语言中的协议及单元測试演示样例

    第1部分 又一次认识C语言 C语言中的协议及单元測试演示样例 [文章摘要] 在实际的软件开发项目中.常常要实现多个模块之间的通信.这就须要大家约定好相互之间的通信协议,各自依照协议来收发和解析消息. ...

  3. 让你提前认识软件开发(21):C程序中的定时器

    版权声明:本文为博主原创文章.对文章内容有不论什么意见或建议.欢迎与作者单独交流.作者QQ(微信):245924426. https://blog.csdn.net/zhouzxi/article/d ...

  4. 让你提前认识软件开发(17):makefile文件的书写及应用

    第1部分 又一次认识C语言 makefile文件的书写及应用 [文章摘要] makefile用于Linux下整个project的编译.对于Linux下的C/C++语言的编译是至关重要的. 本文以实际的 ...

  5. 让你提前认识软件开发(31):数据库脚本中的begin与end

    版权声明:本文为博主原创文章.对文章内容有不论什么意见或建议,欢迎与作者单独交流.作者QQ(微信):245924426. https://blog.csdn.net/zhouzxi/article/d ...

  6. 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up

    软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...

  7. 敏捷软件开发 VS. 传统软件工程

    敏捷软件开发 VS. 传统软件工程 软件工程这一术语1968年被提出,之后美国软件工程专家巴利·玻姆对十多年间研究软件工程的专家学者们提出的一些准则与信条,于1983年对提出软件工程的七条基本定理,将 ...

  8. Atitit.软件开发提升稳定性总结

    Atitit.软件开发提升稳定性总结 #----影响稳定性几个类别 3 1. 资源和内存泄漏溢出 3 2. 数据库/文件死锁 3 3. 类库冲突 3 4. 热更新热部署(业务可用性 3 5. 程序崩溃 ...

  9. java 软件开发面试宝典

    一. Java 基础部分........................................................................................ ...

随机推荐

  1. jsoncpp 不能处理long类型数据

    jsoncpp,是一个c++的解析和生成json的开源工具.假设你的c++程序须要解析或生成json,它会使这个过程变得非常easy! 可是,今天在用jsoncpp进行生成json的时候报了错误,非常 ...

  2. C#递归复制文件夹

    /// <param name="sources">原路徑</param> /// <param name="dest">目 ...

  3. hdu 4687 带花树匹配

    其实吧,思路挺简单的,只不过昨天刚学,还有一些东西不太了解,然后就23333333... 吃晚饭回来就A了,我是有多傻啊,这么题都A不掉,不能忍啊... 我们可以先求出哪些边是可能存在于最大匹配中的, ...

  4. XP下的进程静音技术(遍历进程,遍历输入模块,遍历输入函数,找到函数并HOOK) good

    很多浏览器有这种功能,实现原理都是一样.发声源基本都来自Flash,比如Flash游戏啦,视频播放器啦等等 而Flash的发声都是通过winmm.dll::waveOutWrite函数来完成,所以,我 ...

  5. linux exec和文件描述符妙用技巧(转)

    最近在看<精通unix shell脚本编程>时,看到exec<$1 exec 1>$OUTFILE,一下看的我就蒙了.网上看了大半天,终于搞定,记录如下.对于 Linux 而言 ...

  6. [Java 8] (6) Lambda与资源管理

    资源处理 Java本身自带了垃圾回收(Garbage Collection)功能.可是仅仅有垃圾回收的目标是内部资源(Internal Resource),典型的比方堆上分配的内存区域等.对于外部资源 ...

  7. HDU 1240——Asteroids!(三维BFS)POJ 2225——Asteroids

    普通的三维广搜,须要注意的是输入:列,行,层 #include<iostream> #include<cstdio> #include<cstring> #incl ...

  8. gulp多张图片自动合成雪碧图

    相信做前端的同学都做过这样的事情,为优化图片,减少请求会把拿到切好的图标图片,通过ps(或者其他工具)把图片合并到一张图里面,再通过css定位把对于的样式写出来引用的html里面.对于一些图片较多的项 ...

  9. c#soap调用WebService

    辅助类 /// <summary> /// 上传数据参数 /// </summary> public class UploadEventArgs : EventArgs { i ...

  10. Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置

    接博文<Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)>.上篇博文中,仅简单介绍使用串口的Kgbd的流程(kgdboc方式),本文将重点介绍KGDB调试Linux内核的原 ...