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

第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)

begin

    [执行语句]

end

反例1:

if (@varible1 < @varible2)

    [执行语句1]

    [执行语句2]

在反例1中,由于缺少了begin和end,因此对“执行语句1”和“执行语句2”的“归属问题”带来了疑惑,很容易让人把代码的逻辑搞错。

反例2:

if (@varible1 < @varible2)

       begin

          [执行语句]

end

在反例2中,begin和end没有位于同一起始列,也没有与引用它们的语句左对齐。这样一看,代码就显得很凌乱。

反例3:

if (@varible1 < @varible2)  begin

             [执行语句]

end

在反例3中,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,可使得代码的逻辑清晰、可读性强。这有利于工作效率的提高。

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

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

时间: 2024-10-09 20:15:07

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

让你提前认识软件开发(28):数据库存储过程中的重要表信息的保存及相关建议

第2部分 数据库SQL语言 数据库存储过程中的重要表信息的保存及相关建议 1. 存储过程中的重要表信息的保存 在很多存储过程中,会涉及到对表数据的更新.插入或删除等,为了防止修改之后的表数据出现问题,同时方便追踪问题,一般会为一些重要的表建立一个对应的debug表.这个debug表中的字段要包括原表的所有字段,同时要增加操作时间.操作码和操作描述等字段信息. 例如,在某项目中,包括了如下一个重要的表tb_XXX: create table tb_XXX (      AAA           

让你提前认识软件开发(32):数据库索引

第2部分 数据库SQL语言 数据库索引 索引在数据库中占有非常重要的地位,它是对数据库表中一列或多列的值进行排序的一种结构.正确使用索引,可快速访问数据库表中的特定信息,进而提高数据库脚本的执行效率. 1. 索引分类 数据库表中经常有一列或几列的组合,其值唯一地标识表中的每一行,该列称为表的主键. 在数据库中,将索引分为三类:唯一索引.主键索引和聚集索引. 唯一索引是不允许其中任何两行具有相同索引值的索引,即索引列的值不允许重复. 主键索引是唯一索引的特定类型,该索引要求主键中的每个值都唯一.

让你提前认识软件开发(30):数据库脚本中的空行与空格

第2部分 数据库SQL语言 数据库脚本中的空行与空格 在数据库脚本中,空行与空格起着"锦上添花"的作用.恰当地使用它们,可以提高代码的规范性及可阅读性,进而提升数据库的编程效率. 1. 空行 空行起着分隔脚本段落的作用,适当的空行可以使脚本的布局更加的清晰.空行的作用有以下几个:         (1) 用于分隔两个数据表的创建脚本 示例: create table tb_example1 (         [表内容实现代码] ) go -- 空行 create table tb_e

让你提前认识软件开发(25):数据库简介

第2部分 数据库SQL语言 数据库简介 数据库是个通用化的综合性的数据集合,它可以供各种用户共享且具有最小的冗余度和较高的数据与程序的独立性.目前,国际上主导的大型数据库管理系统有ORACLE.SQL SERVER.SYBASE.INFORMIX和INGRES等. 数据库中常用的编程语言是SQL语言,按其功能可分为四大部分: (1) 数据定义语言(Data Definition Language,DDL),用于定义.撤销和修改数据模式. (2) 数据查询语言(Data Query Languag

让你提前认识软件开发(27):数据库表及索引的创建

第2部分 数据库SQL语言 数据库表及索引的创建         数据表(或称表),是数据库最重要的组成部分之一.数据库只是一个框架,数据表才是其实质的内容.举个例子来说,数据库就像是一座空旷的房子,而数据表是里面的家具,没有家具的房子只是一个空壳而已.根据信息的分类情况,一个数据库中可能包含若干个不同用途的数据表. 表结构有简单.有复杂,这就对开发人员提出了要求.如何设计一个表的字段才是最好的?表的字段如何命名?如何定义表字段的类型?如何建立索引?等等. 1. 修改之前的建表脚本 在作者从事过

让你提前认识软件开发(20):如何在C语言里面执行SQL语句?

[文章摘要] 在通信类软件中,程序经常需要与数据库打交道.为了实现诸如从数据库中获取数据.更新数据库表某字段.插入或删除某条数据等功能,就需要在C语言程序中构造一些SQL语句,并用函数来执行这些SQL语句. 本文介绍如何在C语言程序中构造并执行SQL语句,为相关软件开发工作的开展提供了参考. [关键词] SQL语句  C语言  程序  流程  开发 一.为什么要在C语言程序中执行SQL语句? 在C语言程序中执行SQL语句的原因有以下几个: (1) 程序需要获取数据库中某数据表的字段值,并对这些字

让你提前认识软件开发(47):同行评审

第3部分 软件研发工作总结 同行评审 在<浪潮之巅>这本书中,吴军老师描述了在Google早期的工作方式,其中有一段是这么写的:我一般会在吃完晚饭后把代码修改的清单发给克雷格做代码审核,他一般晚上10点左右会回复我,给我修改意见,详细到某一行多了一个空格. 吴军老师所描述的内容,其实就是软件开发中的同行评审流程. 几乎在所有的软件项目中,都需要同行评审.一个人不管能力多强,看问题的角度总会受到限制,写出来的程序和文档等定不会是十全十美的.如果能够让懂行的同事给参阅一下,并提出他们认为正确的意见

让你提前认识软件开发(48):集成测试

第3部分 软件研发工作总结 集成测试 [文章摘要] 一般的软件研发项目均涉及到多模块和多功能.在各个模块实现其功能之后,把相关模块结合起来进行集成测试以验证整个系统是否满足需求是很有必要的. 本文以作者的实际项目经验为背景,描述了集成测试的整个过程,并对集成测试过程中的一些常见问题进行了简单的介绍. 1. 前言 大部分软件开发人员在工作过程中可能都会有这样的经历:明明在自己模块中实现得好好的功能,一旦和其它模块结合就会出现问题.因此,集成测试就显得很重要.这就有点像很多国内的标准与国际标准不统一

让你提前认识软件开发(33):数据操纵语言(DML)

第2部分 数据库SQL语言 数据操纵语言(DML) 数据操纵语言(Data Manipulation Language,DML)包括insert.delete和update语句,用于增.删.改数据. 本文用以下的表tb_employeeinfo作为例子加以说明: create table tb_employeeinfo (     employeeno         varchar(20)       not null,       -- 员工工号     employeename    va