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

简介: 第2部分 数据库SQL语言数据库脚本中的begin与end         在数据库脚本中,begin与end是一对奇怪的单词。缺少它们,某些代码看起来会让人一头雾水;添加它们,代码的结构瞬间就清晰了。

第2部分 数据库SQL语言

数据库脚本中的begin与end

 

        在数据库脚本中,beginend是一对奇怪的单词。缺少它们,某些代码看起来会让人一头雾水;添加它们,代码的结构瞬间就清晰了。

        确实,beginend作为代码语句的开始和结束标志,可以让脚本程序的逻辑明确,易于阅读。

        beginend主要用在以下地方:

1. ifelseelse ifwhile等语句中

        ifelseelse ifwhile等语句要自占一行,执行语句不得紧跟其后,不论执行语句有多少都要加语句块标志beginend

        脚本文件中的beginend应独占一行并且位于同一起始列,同时与引用它们的语句左对齐。beginend之内的代码块使用缩进,一般缩进为4个空格。

        正例:

if (@varible1 < @varible2)

begin

    [执行语句]

end

 

        反例1

if (@varible1 < @varible2)

    [执行语句1]

    [执行语句2]

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

 

        反例2

if (@varible1 < @varible2)

       begin

          [执行语句]

end

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

 

        反例3

if (@varible1 < @varible2)  begin

             [执行语句]

end

 

        在反例3中,beginif语句位于同一代码行,这也是不规范的。

 

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';

 

        在实际的软件项目中,恰当地使用beginend,可使得代码的逻辑清晰、可读性强。这有利于工作效率的提高。

 

 

 

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

目录
相关文章
|
4月前
|
数据库 数据安全/隐私保护 Python
写一个定时备份数据库的脚本,且只保留最近3天
写一个定时备份数据库的脚本,且只保留最近3天
70 3
|
6月前
|
Oracle 关系型数据库 Linux
解决在linux服务器上部署定时自动查找cpu,内存,磁盘使用量,并将查询结果写入数据库的脚本,只能手动运行实现插库操作
问题描述:将脚本名命名为mortior.sh(以下简称mo),手动执行脚本后查询数据库,表中有相应的信息,放入自动执行队列中,脚本被执行,但是查询数据库,并没有新增数据。
44 0
|
7月前
|
关系型数据库 MySQL Shell
shell脚本在MySQL容器中自动创建数据库和表
使用Bash Shell脚本语言在Kubernetes中的MySQL容器中自动创建数据库和表,ps:前提是您已经拥有一个运行中的Kubernetes集群,并且已经将MySQL容器部署到其中。
152 0
|
8月前
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
68 0
|
8月前
|
程序员
脚本一键生成通用接口,一分钟实现增删改查
脚本一键生成通用接口,一分钟实现增删改查
|
6月前
|
SQL 关系型数据库 MySQL
MySql数据库中的视图,索引与数据库sql脚本如何导入与导出---(详细介绍)
MySql数据库中的视图,索引与数据库sql脚本如何导入与导出---(详细介绍)
249 0
|
2月前
|
关系型数据库 MySQL 数据库
OceanBase数据库常见问题之脚本执行失败如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
1天前
|
SQL 存储 Oracle
C#利用IDbCommand实现通用数据库脚本执行程序
C#利用IDbCommand实现通用数据库脚本执行程序
|
8天前
|
弹性计算 NoSQL Shell
一键安装 MongoDB 数据库脚本
【4月更文挑战第29天】
13 4
|
2月前
|
SQL 编解码 数据库
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
15 1
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行