让你提前认识软件开发(35):怎样改动SQL脚本以完毕需求?
第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
让你提前认识软件开发(35):怎样改动SQL脚本以完毕需求?的更多相关文章
- 让你提前认识软件开发(23):怎样在C语言中运行shell命令?
第1部分 又一次认识C语言 怎样在C语言中运行shell命令? [文章摘要] Linux操作系统具备开源等诸多优秀特性,因此在很多通信类软件(主流开发语言为C语言)中,开发平台都迁移到了Linux上, ...
- 让你提前认识软件开发(19):C语言中的协议及单元測试演示样例
第1部分 又一次认识C语言 C语言中的协议及单元測试演示样例 [文章摘要] 在实际的软件开发项目中.常常要实现多个模块之间的通信.这就须要大家约定好相互之间的通信协议,各自依照协议来收发和解析消息. ...
- 让你提前认识软件开发(21):C程序中的定时器
版权声明:本文为博主原创文章.对文章内容有不论什么意见或建议.欢迎与作者单独交流.作者QQ(微信):245924426. https://blog.csdn.net/zhouzxi/article/d ...
- 让你提前认识软件开发(17):makefile文件的书写及应用
第1部分 又一次认识C语言 makefile文件的书写及应用 [文章摘要] makefile用于Linux下整个project的编译.对于Linux下的C/C++语言的编译是至关重要的. 本文以实际的 ...
- 让你提前认识软件开发(31):数据库脚本中的begin与end
版权声明:本文为博主原创文章.对文章内容有不论什么意见或建议,欢迎与作者单独交流.作者QQ(微信):245924426. https://blog.csdn.net/zhouzxi/article/d ...
- 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up
软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...
- 敏捷软件开发 VS. 传统软件工程
敏捷软件开发 VS. 传统软件工程 软件工程这一术语1968年被提出,之后美国软件工程专家巴利·玻姆对十多年间研究软件工程的专家学者们提出的一些准则与信条,于1983年对提出软件工程的七条基本定理,将 ...
- Atitit.软件开发提升稳定性总结
Atitit.软件开发提升稳定性总结 #----影响稳定性几个类别 3 1. 资源和内存泄漏溢出 3 2. 数据库/文件死锁 3 3. 类库冲突 3 4. 热更新热部署(业务可用性 3 5. 程序崩溃 ...
- java 软件开发面试宝典
一. Java 基础部分........................................................................................ ...
随机推荐
- RStudio版本号管理 整合Git
本文为原创,转载注明出处. 系统环境: win7 x64 R-3.1.0-win.exe RStudio-0.98.507.exe 前置条件:必须拥有github仓库: 如:https://githu ...
- 【Cocos2d-X开发学习笔记】第28期:游戏中音乐和音效的使用
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 UI在游戏中占有很重要的地位,但吸引玩家的除了这 ...
- for循环遍历字符串的还有一种方法
遍历字符c,让它各自等于字符串数组chars里面的各个字符.然后运行以下的语句,当c被赋值为chars里面全部字符各一次后.就会退出这个循环. 通常我们遍历字符串数组用 for(int i=0;i&l ...
- 异常与诊断(74篇,内含许多WinDBG的文章)
http://www.cnblogs.com/lidabo/category/542683.html
- linux:sed高级命令之n、N(转)
sed的语法格式: sed [option] {sed-command} {input-file} sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-comm ...
- 让盘古分词支持最新的Lucene.Net 3.0.3
原文:让盘古分词支持最新的Lucene.Net 3.0.3 好多年没升级过的Lucene.Net最近居然升级了,到了3.0.3后接口发生了很大变化,原来好多分词库都不能用了,所以上次我把MMSeg给修 ...
- OCA读书笔记(3) - 使用DBCA创建Oracle数据库
Objectives: •Create a database by using the Database Configuration Assistant (DBCA) •Generate databa ...
- 关于iptables的u32匹配
前面一篇文章----阐释了iptables最新的bpf match,说它将多个matches并成了一个经过编译的解释型bytecode bpf match,早在bpf match之前,u32 matc ...
- golang使用pprof检查goroutine泄露
有一段时间,我们的推送服务socket占用非常不正常,我们自己统计的同一时候在线就10w的用户,可是占用的socket居然达到30w,然后查看goroutine的数量,发现已经60w+. 每一个用户占 ...
- Delphi透明组件开发(去掉自己的csOpaque,去掉父控件的WS_CLIPCHILDREN,增加WS_EX_TRANSPARENT,截获WM_ERASEBKGND,然后在WM_DRAWITEM里画) good
透明的控件, 一般继承自TGraphicControl的(就是那些没有handle属性, 不能有focus的控件, 如image)都有Transparent属性. 对TWinControl类的控件, ...