让你提前认识软件开发(31):数据库脚本中的begin与end
版权声明:本文为博主原创文章。对文章内容有不论什么意见或建议,欢迎与作者单独交流。作者QQ(微信):245924426。 https://blog.csdn.net/zhouzxi/article/details/34509887
第2部分 数据库SQL语言
数据库脚本中的begin与end
在数据库脚本中。begin与end是一对奇怪的单词。
缺少它们,某些代码看起来会让人一头雾水。加入它们。代码的结构瞬间就清晰了。
确实,begin与end作为代码语句的開始和结束标志,能够让脚本程序的逻辑明白,易于阅读。
begin与end主要用在下面地方:
1. if、else、else if、while等语句中
if、else、else if、while等语句要自占一行,运行语句不得紧跟其后,不论运行语句有多少都要加语句块标志begin…end。
脚本文件里的begin和end应独占一行而且位于同一起始列,同一时候与引用它们的语句左对齐。begin…end之内的代码块使用缩进,一般缩进为4个空格。
正例:
if (@varible1 < @varible2)
:
if (@varible1 < @varible2)
[运行语句1]
[运行语句2]
在反例1中,因为缺少了begin和end。因此对“运行语句1”和“运行语句2”的“归属问题”带来了疑惑,非常easy让人把代码的逻辑搞错。
反例2:
if (@varible1 < @varible2)
中,begin和end没有位于同一起始列,也没有与引用它们的语句左对齐。这样一看,代码就显得非常凌乱。
反例3:
if (@varible1 < @varible2) 中。begin与if语句位于同一代码行,这也是不规范的。
2. 创建存储过程(函数、触发器等)时
创建存储过程(函数、触发器等)时,不管存储过程(函数、触发器等)的运行语句内容部分有多少行,都必须以begin開始,end结束,而且在end后面不加存储过程(函数、触发器等)名。
演示样例1(基于Sybase数据库创建存储过程):
if exists (select 1 from sysobjects where name = 'pr_example’)
begin
drop procedure pr_example
end
go
create procedure pr_example
@name varchar(30), -- 姓名
@age int -- 年龄
as
declare @begintime varchar(20), -- 開始时间
@endtime varchar(20) -- 结束时间
begin
[运行语句部分]
end
go
print 'create procedure pr_example ok'
go
演示样例2(基于Oracle数据库创建存储过程):
create or replace procedure pr_example
(
v_name in varchar2, -- 姓名
v_age out int -- 年龄
)
as
begintime varchar2(20); -- 開始时间
endtime varchar2(20); -- 结束时间
begin
[运行语句部分]
end;
/
prompt 'create procedure pr_example ok';
此外。创建存储过程(函数、触发器等)时,每一个參数都必须单独位于一行,不同意换行或一行多个參数。
该參数的凝视要么和该參数位于同一行,要么单独占一行,不同意在參数行上换行。例如以下的代码是不规范的:
演示样例3(基于Oracle数据库创建存储过程):
create or replace procedure pr_example
(
v_name
in varchar2, -- 姓名
v_age out int
-- 年龄
)
as
begintime varchar2(20); -- 開始时间
-- 结束时间
endtime
varchar2(20);
begin
[运行语句部分]
end;
/
prompt 'create procedure pr_example ok';
在实际的软件项目中,恰当地使用begin与end。可使得代码的逻辑清晰、可读性强。
这有利于工作效率的提高。
(本人微博: topnav=1&wvr=5" rel="nofollow">http://weibo.com/zhouzxi?topnav=1&wvr=5
让你提前认识软件开发(31):数据库脚本中的begin与end的更多相关文章
- Oracle数据库脚本中的set define off
2018年8月6日15:11:34 Oracle数据库脚本中的set define off 前言 最近在公司写需求,接触到脚本,第一句set define off;就不知道什么意思了,查询后记录之. ...
- 让你提前认识软件开发(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 ...
- 让你提前认识软件开发(35):怎样改动SQL脚本以完毕需求?
第2部分 数据库SQL语言 怎样改动SQL脚本以完毕需求? SQL脚本的改动和C语言代码的改动流程是一样的,都要遵循下面步骤: 第一步,阅读需求.弄清楚自己要完毕什么功能. ...
- 让你提前认识软件开发(17):makefile文件的书写及应用
第1部分 又一次认识C语言 makefile文件的书写及应用 [文章摘要] makefile用于Linux下整个project的编译.对于Linux下的C/C++语言的编译是至关重要的. 本文以实际的 ...
- 华为云软件开发云:容器DevOps,原来如此简单!
当开发团队把代码提交到 Git 应用仓库的那一刻,他们心里在想什么? 祈祷没有bug?渴望回家补觉?产品经理Go Die? 对,也不对.因为这只是最终发布万里长征的一小步,接下来要面对测试环境.生产环 ...
- 如何使用ABP进行软件开发(2) 领域驱动设计和三层架构的对比
简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项目中涉及到的知识点,例如DTO,应用服务层,整洁架构,领域对象(如实体,聚合,值对象)等. 笔者也曾经提到,AB ...
- 软件开发V型号
RAD(rap application development),就是软件开发过程中的一个重要模型,称为高速应用开发模型.其模型构图形似字母V,所以又称V模型. 他通过开发和測试同一时候进行 ...
随机推荐
- 年终培训关于磁盘冗余阵列、热备、群集、负载均衡、云计算、F5、Nginx等的概念和基本原理
在系统部署实施过程中,客户往往会关注系统的可用性方面的指标. 对于一个具备高可用性的系统来说, 多机部署方案是必不可少的. 我们这个知识分享,就从多个不同层面来介绍多机部署方案. ---------- ...
- h5活动页开发总结记录
前几天在做h5活动页面的时候,有这样一个需求 上面的活动排行点击查看历史排行数据,弹出日期选择框,如下图 点击要查看的日期排行数据,这里需要对还没到的日期做处理,让用户不能选择,只可选择今天或者之前的 ...
- netty源码解解析(4.0)-9 ChannelPipleline的默认实现-链表管理
io.netty.channel.DefaultChannelPipeline implements ChannelPipleline DefaultChannelPiple给出了ChannelP ...
- 【NET CORE微服务一条龙应用】第一章 网关使用与配置
简介 微服务的系统应用中,网关系统使用的是ocelot,ocelot目前已经比较成熟了 ocelot就不做介绍了,等整体介绍完后再进行各类扩展介绍,ocelot源码地址:https://github. ...
- SpringMVC+jquery.uploadify 上传文件
前言 以前用Asp.net MVC+uploadify上传文件,最近学习SpringMVC,所以就用SpringMVC+uploadify做个上传文件的demo. 刚开始用form表单的方式提交,在C ...
- C# if---else---练习题整理
if else 语句是到今天为止学习的第一个完整的语句,把有意思的练习题整理下来开一下脑洞!!! 练习一简单的人工智能 1 static void Main(string[] args) ...
- java根据年月显示每周
一.页面效果 1.展示7月份的所有周. 2.当前时间2018.08.02 , 显示到本周. 二.前端代码 1.显示层的代码 <span id="weekyear"> ...
- 大数据之 Spark
1 渊源 于2009由Matei Zaharia创立了spark大数据处理和计算框架,基于内存,用scala编写. 2 部署 2.1 需要软件包 下载路径见已有博文 Jdk ——因为运行环境为jvm ...
- csharp: Use of Is and As operators in csharp
/// <summary> /// Geovin Du 20170622 /// </summary> /// <param name="sender" ...
- OSPF协议总结
总结: 1.ospf协议报文不会泛洪扩散,而是逐级路由器处理后,再从所有ospf启用端口发送出去,也就是说,只能从邻居接收到ospf报文,报文的源ip是邻居的ip地址,目的ip是组播ip. 2.开启o ...