版权声明:本文为博主原创文章。对文章内容有不论什么意见或建议,欢迎与作者单独交流。作者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。微信号:245924426,欢迎关注。)

让你提前认识软件开发(31):数据库脚本中的begin与end的更多相关文章

  1. Oracle数据库脚本中的set define off

    2018年8月6日15:11:34 Oracle数据库脚本中的set define off 前言 最近在公司写需求,接触到脚本,第一句set define off;就不知道什么意思了,查询后记录之. ...

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

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

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

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

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

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

  5. 让你提前认识软件开发(35):怎样改动SQL脚本以完毕需求?

    第2部分 数据库SQL语言 怎样改动SQL脚本以完毕需求? SQL脚本的改动和C语言代码的改动流程是一样的,都要遵循下面步骤:         第一步,阅读需求.弄清楚自己要完毕什么功能.       ...

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

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

  7. 华为云软件开发云:容器DevOps,原来如此简单!

    当开发团队把代码提交到 Git 应用仓库的那一刻,他们心里在想什么? 祈祷没有bug?渴望回家补觉?产品经理Go Die? 对,也不对.因为这只是最终发布万里长征的一小步,接下来要面对测试环境.生产环 ...

  8. 如何使用ABP进行软件开发(2) 领域驱动设计和三层架构的对比

    简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项目中涉及到的知识点,例如DTO,应用服务层,整洁架构,领域对象(如实体,聚合,值对象)等. 笔者也曾经提到,AB ...

  9. 软件开发V型号

    RAD(rap application development),就是软件开发过程中的一个重要模型,称为高速应用开发模型.其模型构图形似字母V,所以又称V模型.      他通过开发和測试同一时候进行 ...

随机推荐

  1. JavaWeb学习(三十)———— 数据库连接池

    一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...

  2. spring的第二天

    spring的第二天 ssm框架 spring  在昨天简单的介绍了一下spring,那么今天接着继续介绍. spring值的注入 自动装配[autowire] 引用资源 applicationCon ...

  3. C#部分类与部分方法

    部分类也可以定义部分方法.部分方法在部分类中定义,但没有方法体,在另一个部分类中执行.在这两个部分类中,都要使用partial关键字. public partial class MyClass { p ...

  4. QT中全局变量的定义

    多的就不说了,本来就是一个简单地内容,只是不会的话会很头疼 我们首先新建两个文件,文件名可以自定义,我们在这里定义为variate.h 和 variate.cpp 当然了,后缀是不能变的. 和函数一样 ...

  5. var声明变量

    var操作符定义变量将成为定义该变量作用域的局部变量 举例说明: 例子1: function test(){ var message = "hi"; //message是函数内部局 ...

  6. 网页布局设计css中单位px和em,rem的区别

    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的 ...

  7. 安装SQL server 2016遇到问题

    microsoft R open https://mran.microsoft.com/download/ https://mran.revolutionanalytics.com/download/ ...

  8. mysql之数据备份与还原

    mysql数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境.但不能恢复到异构系统中如Windows. #2. 逻辑备份: 备份的是建表.建库.插入等操作所执行SQL语句,适用于中 ...

  9. 网络基础 http 会话(session)详解

    http 会话(session)详解 by:授客 QQ:1033553122 会话(session)是一种持久网络协议,在用户(或用户代理)端和服务器端之间创建关联,从而起到交换数据包的作用机制 一. ...

  10. zookeeper.Net

    原文转至:http://www.cnblogs.com/shanyou/p/3221990.html 之前整理过一篇文章<zookeeper 分布式锁服务>,本文介绍的 Zookeeper ...