版权声明:本文为博主原创文章。对文章内容有不论什么意见或建议,欢迎与作者单独交流。作者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)
begin
??? [运行语句]
end
?
??????? 反例1:
if (@varible1 < @varible2)
??? [运行语句1]
??? [运行语句2]
??????? 在反例1中,因为缺少了begin和end。因此对“运行语句1”和“运行语句2”的“归属问题”带来了疑惑,非常easy让人把代码的逻辑搞错。
?
??????? 反例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。可使得代码的逻辑清晰、可读性强。
这有利于工作效率的提高。
?
?
?
(本人微博:<a href="http://weibo.com/zhouzxi?
topnav=1&wvr=5" rel="nofollow" target="_blank">http://weibo.com/zhouzxi?topnav=1&wvr=5。微信号:245924426,欢迎关注。)