PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

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

原创
2016-06-07 15:57:54 1154浏览

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

begin

[执行语句]

end

反例1:

if (@varible1

[执行语句1]

[执行语句2]

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

反例2:

if (@varible1

begin

[执行语句]

end

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

反例3:

if (@varible1

[执行语句]

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,欢迎关注!)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。