版权声明:本文为博主原创文章。对文章内容有不论什么意见或建议,欢迎与作者单独交流。作者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. Jmeter接口测试——跨线程组调用参数(token为例)

    昨天学会了动态获取token,今天测试接口时希望能够实现跨线程调用token值. 实现原理: jmeter本身的“__setProperty”函数可以把某参数的值设置成jmeter本身的内置属性,而j ...

  2. InnoDB存储引擎--Innodb Buffer Pool(缓存池)

    InnoDB存储引擎--Innodb Buffer Pool(缓存池) Innodb Buffer Pool的概念 InnoDB的Buffer Pool主要用于缓存用户表和索引数据的数据页面.它是一块 ...

  3. springboot使用遇到问题:Class “model.Address” is listed in the persistence.xml file but not mapped

    报错如下: 解决如下: 这是一个Eclipse的怪癖.我最近在创建一个禁用了JPA库配置的新JPA项目时遇到了这个问题,但是在我通过Eclipse New JPA Entity向导创建实体之前没有手动 ...

  4. [PHP] 算法-数组中出现次数超过一半的数字的PHP实现

    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如果不存在 ...

  5. Java学习笔记之——数组

    一.一维数组 1. 什么是数组 变量:在内存中开辟了一块空间 数组:在内存中开辟了一块连续的空间,每块空间保存的值/对象叫做元素,每个元素都有对应的下标.(下标从0开始) 2. 初始化一个数组 1)不 ...

  6. linux下安装apache环境

    Centos6.5  64位下安装apache php mysql(安装包版本一定要正确,网上很多都不准,不要用32位的安装包装再64位上,后期有很多问题,下载安装后一定要检出版本,有的网友操蛋,把3 ...

  7. 10个最佳 Javascript+HTML5 演示文稿框架

    JavaScript 与 HTML5 框架在创建基于现代浏览器的演示文稿时发挥了重要作用.他们把展示插入网页,为演示信息提供了一个有效方式.一般来说,手工插入花费大量事件和精力,它很复杂,以至于新手们 ...

  8. Java JVM监控工具JConsole简介

    Java JVM监控工具JConsole简介 jconsole命令 功能:打开java监视管理控制台 方法: jconsole [选项1] [选项2] …… [选项n] 常用选项: -help     ...

  9. Oracle 关闭数据库(未使用Oracle Restart)

    Oracle关闭数据库(未使用Oracle Restart) by:授客 QQ:1033553122 SHUTDOWN [选项] 选项说明: NORMAL-语句执行后,不允许创建新的连接:等待所有当前 ...

  10. BeanFactory和ApplicationContext的比较

    1.BeanFactory实例化后,不会马上实例化Bean:ApplicationContext在实例化后紧跟着就会实例化Bean 2.ApplicationContext还实现了ResourceLo ...