PL/SQL中GOTO语句和标签
在PL/SQL中也提供GOTO语句,其语法是
GOTO label;
这里label是在PL/SQL块中定义的标签.标签是用双箭头括号括起来的.当执行GOTO语句的时候,控制会立即转到由标签标识的语句.
1.对于GOTO的限制
a.对于块,循环或者IF语句而言,想要从外层跳到内层是非法的.
b.使用GOTO子句从一个IF子句跳到另一个子句中也是非法的.
begin
if x>3 then
...
goto<<lbl>>
else
<<lbl>>
...
end if;
end;
c.从一个异常处理块内跳转到当前块是非法的。
2.为循环设定标签
循环本身是可以被设定标签的。如果进行了设定,那么可以在EXIT语句中使用该标签指明要退出哪个循环.例如:
<<l_outer>>
for v_outer_index in 1..10 loop
...
<<I_inner>>
for v_inner_index in 1..30 loop
...
if v_outer_index > 5 then
EXIT I_outer;
end if;
end loop I_inner;
end loop I_outer;
如果循环设定了标签,那么可以在END LOOP语句的后面包含该标签名,如上面所示.
3.谨慎的使用GOTO语句
在使用GOTO语句时一定要小心,不然都是些跳来跳去的代码,很难理解也很难维护.
几乎所有使用GOTO的情况都可以使用其他的PL/SQL控制结构,例如循环或者条件结构,来重新进行编写.也可以使用异常处理来退出深层嵌套的循环,而不用直接跳转到结尾.
4.null语句
在一些情况下,你可能想要显式的指明不进行任何操作.这可以通过使用NULL语句来实现.NULL语句不做任何事情,它只是一个占位符.
例如:
begin
...
if ... then
...
else
null;
end if;
...
end;
相关文档:
/*第几页必须大于1
select top 每页数量 * id
from @t a
where id not in
(select top (第几页-1)*每页数量 id
from @t b
)
*/
declare @lcSqlCommand nvarchar(100)
declare @t table (id int IDENTITY,orderDate datetime)
insert into @t
select orderDate
&nb ......
假设你想找书中的某一个句子。你可以一页一页地逐页搜索,但这会花很多时间。而通过使用索引,你可以很快地找到你要搜索的主题。
表的索引与附在一本书后面的索引非常相似。它可以极大地提高查询的速度。对一个较大的表来说,通过加索引,一个通常要花费几个小时来完成的查询只要几分钟就可以完成。因此没有理由对 ......
--desc 表名 描述表的内容
desc emp;
--加上数学表达式和列名 ""保持格式
select ename "name space", sal*12 year_sal from emp;
select 2*3 from dual;
select sysdate from dual;
--空值的数学表达式 结果都是空值
select ename, sal*12 + comm from emp;
- ......
这两天都没有好好学习,今天终于算投入了些,由于课程的关系,我的sql也是同vb一起学习的。虽然知道贪多嚼不烂,可是按照实际情况,我完全没有理由抛弃sql的。
最近都把时间投入到vb和面向对象中,sql今天好好复习了下,从create database 开始,create table,alter table , add constraint …&h ......