让你提前认识软件开发(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模型. 他通过开发和測试同一时候进行 ...
随机推荐
- 关于wepack的使用总结以及优化探讨
一.前言 不知不觉,webpack版本已经到4.0了.使用它也有很长一段时间了,回头看看,自己木有总结webpack方面的知识,现在有空起个头,主要是总结自己常用的配置和一下优化的探讨,以后有啥想法也 ...
- Yapi学习笔记
. 下载源码:https://github.com/YMFE/yapi 2. 安装MongoDB数据库,下载地址:链接:https://pan.baidu.com/s/1bZKlcy 密码:ah3n ...
- 使用Git Extensions简单入门Git
前言 关于这个主题,之前我录了段视频教程,在本地看清晰度还可以,但传到优酷上就很不清晰了,即使是后来重制后还是一样不清晰,所以现在想整理成文字版.当然,大家还可以将我百度云上的视频下载下来观看,连同优 ...
- jQuery 小特效【文本框折叠隐藏,展开显示】【下拉菜单】【颜色渐变】【弹窗+遮罩】
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...
- vb.net 发Mail
Private Sub A1() '创建发件连接,根据你的发送邮箱的SMTP设置填充 Dim a As System.Net.Mail.Attachment Dim smtp As New Syste ...
- canvas-star6-drawMoon.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- RSA key format is not supported
对接支付宝时,提示RSA错误 : 请仔细检查 : 创建支付对象时,关键字参数的名字 如果公私钥是以拼接路径的方式传递给AliPay,正确的关键字参数的名字应该如下 :
- 【代码笔记】Web-ionic-toggle(切换开关)
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- Flume初入门简单配置与使用
1.Flume在集群中扮演的角色 Flume.Kafka用来实时进行数据收集,Spark.Storm用来实时处理数据,impala用来实时查询. 2.Flume框架简介 1.1 Flume提供一个分布 ...
- TUM数据集rgbd_benchmark工具的使用方法
# 在学习视觉slam过程中,需要对数据集合进行预处理和对slam或者跟踪结果进行评价,TUM提供一组这样的工具,为了自己以后方便查找,于是把它记录下来 一.RGBD_Benchmark工具下载链接: ...