oraclegoto语句介绍

一 定义:

The Oracle PL/SQL GOTO statement is a sequential control structure available in Oracle. The GOTO statement immediately transfers program control (called "branching") unconditionally to a named statement label or block label. The statement or label name must be unique in the block.

属于plsql控制语句,用于程序控制非条件跳至指定标签<<???>>。不易控制和维护,慎用!

二 例子:

1、简单GOTO 语句,判断数字是否为质数:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

DECLARE
  p VARCHAR2(30);
  n PLS_INTEGER := 37; -- test any integer > 2 for prime
BEGIN
  FOR j IN 2 .. round(sqrt(n)) LOOP
    IF n MOD j = 0 THEN
      -- test for prime
      p := ' is not a prime number'; -- not a prime number
      GOTO print_now;
    END IF;
  END LOOP;
  p := ' is a prime number';
  <<print_now>>
  dbms_output.put_line(to_char(n) || p);
END;
/

2、使用null避免报错:

?

1
2
3
4
5
6
7
8
9
10
11
12

DECLARE
  done BOOLEAN;
BEGIN
  FOR i IN 1 .. 50 LOOP
    IF done THEN
      GOTO end_loop;
    END IF;
    <<end_loop>> -- not allowed unless an executable statement follows
    NULL; -- add NULL statement to avoid error
  END LOOP; -- raises an error without the previous NULL
END;
/

3、使用goto分出一个环绕块:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

-- example with GOTO statement
DECLARE
  v_last_name VARCHAR2(25);
  v_emp_id    NUMBER(6) := 120;
BEGIN
  <<get_name>>
  SELECT last_name
  INTO v_last_name
  FROM employees
  WHERE employee_id = v_emp_id;
  BEGIN
    dbms_output.put_line(v_last_name);
    v_emp_id := v_emp_id + 5;
    IF v_emp_id < 120 THEN
      GOTO get_name; -- branch to enclosing block
    END IF;
  END;
END;
/

----------------------

dylan presents.

时间: 2024-08-04 09:08:31

oraclegoto语句介绍的相关文章

MySQL删除记录Delete 与Truncate 语句介绍

  ySQL为我们提供了delete和truncate语句来删除数据. delete 语句的定义: 经常和数据库打交道的孩子们,删除数据的时候用的大多都是 delete 语句.现在让我们来看一下 delete语句的定义. 代码如下 DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_definition] [ORDER BY ...] [LIMIT row_count] 这里补充说明一下,也许有人要问了:"小小子,你

SQL高手篇:精妙SQL语句介绍

语句 说明:复制表(只复制结构,源表名:a 新表名:b)  SQL: select * into b from a where 1<>1    说明:拷贝表(拷贝数据,源表名:a 目标表名:b)  SQL: insert into b(a, b, c) select d,e,f from b;    说明:显示文章.提交人和最后回复时间  SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) add

MySQL中select语句介绍及使用示例

数据表都已经创建起来了,我们就可以用自己喜欢的方式对数据表里面的信息进行检索和显示了,下面为大家讲解下MySQL中select语句的应用,感兴趣的碰可以学习下   数据表都已经创建起来了,假设我们已经插入了许多的数据,我们就可以用自己喜欢的方式对数据表里面的信息进行检索和显示了,比如说:可以象下面这样把整个数据表内的内容都显示出来 select * from president; 也可以只选取某一个数据行里的某一个数据列 select birth from president where las

SQL Server的基本功能性语句介绍_MsSql

1 注释符注释是指程序代码中不执行的文本字符串,是对程序的说明,可以提高程序的可读性,使程序代码更易于维护,一般嵌入在程序中并以特殊的标记显示出来.在Transact-SQL中,注释可以包含在批处理.存储过程.触发器中,有两种类型的注释符:  --:这是ANSI标准的两个连字符组成的注释符,用于单行注释.  /*-*/:这是与C语言相同的程序注释符,/*用于注释文字的开头,*/用于注释文字的结尾,可以在程序中标识多行文字为注释语句. 2 输出语句(PRINT)输出语句PRINT语句用于把消息传递

MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍_Mysql

不知道有没有人碰到过这样恶心的问题:两张表连接查询并limit,SQL效率很高,但是加上order by以后,语句的执行时间变的巨长,效率巨低. 情况是这么一个情况:现在有两张表,team表和people表,每个people属于一个team,people中有个字段team_id. 下面给出建表语句: 复制代码 代码如下: create table t_team ( id int primary key, tname varchar(100) ); create table t_people (

Ruby简明教程之循环语句介绍_ruby专题

循环结构在编程语言中是不可或缺的,所以Ruby中的循环也有其自定义的规则. 而我们关注循环结构,要知道两个因素:1) 循环的条件:2) 循环执行的内容 Ruby有一些方式来实现循环结构体: 1. times方法 在前面已经有提到过了,语法如下: 复制代码 代码如下: 循环次数.times do                    循环次数.times {       重复执行的动作                          重复执行的动作               end      

MYSQL的REPLACE和ON DUPLICATE KEY UPDATE语句介绍解决问题实例_Mysql

在对看看的后台进行排序的时候,遇到了一个像这样的需求,在电影表中有ID(主键自增)和orderby(排序字段) ,假设有十条数据id分别从1-10之间,对应的orderby也是从1-10之间,我现在想把id=9的数据移动到第三的位置(id=3)的这个位置,并且保证之前的数据排列顺序(即id=3的orderby=4,id=4的orderby=5-id=8的orderby=9),这样如果用循环的形式是可以解决数据的问题,但是这样操作数据库过程太多,现在就想用一条sql语句来解决这个问题. 下面来看看

MySQL中select语句介绍及使用示例_Mysql

数据表都已经创建起来了,假设我们已经插入了许多的数据,我们就可以用自己喜欢的方式对数据表里面的信息进行检索和显示了,比如说:可以象下面这样把整个数据表内的内容都显示出来 select * from president; 也可以只选取某一个数据行里的某一个数据列 select birth from president where last_name='Eisenhower'; select语句的通用形式如下: select 你要的信息 from 数据表(一个或多个) where 满足的条件 sel

Ruby简明教程之判断语句介绍_ruby专题

条件判断,在编程语言中都存在,而Ruby中的条件判断和Java中类似,当然还是存在些许差别 Ruby中条件判断的条件: 1) 可以使用 ==,<,>等比较运算来作为条件,比较运算可以返回true和false,这和java中的语法是类似的 2) 一些其他的方法也可以用来作为判断条件,比如,empty?方法,为空则返回true,否则返回false 3) 有些方法虽然不会返回true或false,但是也能作为条件判断的条件,他们返回的对象,要么是false或nil,要么是意义的对象,则可根据如下表格