让你提前认识软件开发(31):数据库脚本中的begin与end
来源:互联网 发布:电脑软件故障是什么 编辑:程序博客网 时间:2024/05/14 05:00
第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
- 让你提前认识软件开发(30):数据库脚本中的空行与空格
- 让你提前认识软件开发(26):数据库脚本的注释
- 让你提前认识软件开发(29):数据库脚本文件的布局
- 让你提前认识软件开发(22):shell脚本中的文件操作
- 让你提前认识软件开发(25):数据库简介
- 让你提前认识软件开发(32):数据库索引
- 让你提前认识软件开发(34):数据库的维护
- 让你提前认识软件开发(14):程序中的算法
- 让你提前认识软件开发(11):localtime与GetLocalTime
- 让你提前认识软件开发(28):数据库存储过程中的重要表信息的保存及相关建议
- 让你提前认识软件开发(35):如何修改SQL脚本以完成需求?
- 让你提前认识软件开发(50):软件需求
- 让你提前认识软件开发(27):数据库表及索引的创建
- 让你提前认识软件开发(9):C语言中的大括号
- 让你提前认识软件开发(19):C语言中的协议及单元测试示例
- 让你提前认识软件开发(21):C程序中的定时器
- 让你提前认识软件开发(1):序言
- 稀疏表示
- leetcode: Word Ladder II
- Intellij IDEA 13 简单配置和界面美化
- 字符处理函数
- 简单的dialog里面的字的颜色查找
- 让你提前认识软件开发(31):数据库脚本中的begin与end
- :Programming Skills--C# .net WebPages:CloneNode()
- Android中View绘制流程以及invalidate()等相关方法分析(转)
- 积分伤不起呀
- handler传递消息
- shu_1746 无平方因子
- 14天学会安卓开发(第二天)Android程序设计基础activity和intent
- POJ 2391
- 每日算法之三十六:Permutations && Permutations II