您当前的位置: 首页 > 数据库教程 > Oracle教程 > oraclegoto语句介绍

oraclegoto语句介绍

作者:不详 来源:网络 发布时间: 2014-08-24 19:52 点击:
一 定义: 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

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.
分享到:
本文"oraclegoto语句介绍"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4