oracle循环语句

来源:互联网 发布:python lambda 包含for 编辑:程序博客网 时间:2024/06/05 02:16

DECLARE   --声明部分

    v_sal NUMBER(5)NOTNULL :=0;--赋初值为0,若写not null必须附一个值,声明常量是要用const

    --多行的时候要用fetchinto游标来赋值

 

--执行部分

BEGIN

  --查询工号7369的工资,并将该工资保存到变量v_sal

  --使用select..into..给变量赋值

  SELECT sal

  INTO v_sal

  FROM emp

  WHERE empno =1000;

 

  --输出v_sal的值

  dbms_output.put_line('工资是:' || v_sal);

 

  --判断,如果工资小于2000,则给该员工加上500

  IF v_sal <2000THEN

    UPDATE emp

    SET sal = sal +500

    WHERE empno =7369;

   

    dbms_output.put_line('更新成功');

  ENDIF;

 --异常处理

EXCEPTION

  --当没有查找到指定工号的数据时,发生该异常

  WHEN no_data_foundTHEN dbms_output.put_line('没有查询到相关数据');

  --others捕获其他不明确的异常

  WHENOTHERSTHEN

    dbms_output.put_line('发生了其他异常');

END;

 

SELECT *FROM empWHERE empno =7369;

 

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

DECLARE

--指定员工的姓名,

    v_ename emp.ename%TYPE;--VARCHAR2(20)  ,%TYPE表示v_ename的数据类型和表emp中的ename字段的数据类型一致

    v_sal emp.sal%TYPE;

    v_empno emp.empno%TYPE:=&empno;--&表示从键盘上输入

   

BEGIN

  SELECT ename,sal

  INTO v_ename,v_sal

  FROM emp

  WHERE empno = v_empno;

 

  --输出员工姓名和工资

  dbms_output.put_line('员工姓名:' || v_ename || ',员工工资:' || v_sal);

 EXCEPTION

   WHEN no_data_foundTHEN

     dbms_output.put_line('你输入的员工工号不存在!');

END;

 

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

--属性类型:%ROWTYPE

DECLARE

  v_emp emp%ROWTYPE;--%ROWTYPE表示变量v_emp表和emp表一行的数据类型是一致的

  v_empno emp.empno%TYPE:=&empno;

 

BEGIN

  --查询指定工号的员工所有信息,保存在记录类型v_emp

  SELECT *

  INTO v_emp--所有的变量都保存在v_emp

  FROM emp

  WHERE empno = v_empno;

 

  --输出指定员工的信息

  dbms_output.put_line('员工工号:' || v_emp.empno ||

                       ',员工姓名:' || v_emp.ename ||

                       ',员工工资:' || v_emp.job ||

                       ',工作岗位:' || v_emp.sal);

EXCEPTION

  WHEN no_data_foundTHEN

    dbms_output.put_line('你输入的工号不存在!');

END;

 

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

--记录类型

DECLARE

    --自定义记录类型(也是数据类型的一种)

    TYPE emp_recISRECORD(

       v_ename emp.ename%TYPE,

       v_sal emp.sal%TYPE,

       v_deptno emp.deptno%TYPE

    );

   

    --定义一个emp_rec类型的变量

    v_emp emp_rec;

   

    v_empno emp.empno%TYPE:=&empno;

   

BEGIN

  SELECT ename,sal,deptno

  INTO v_emp

  FROM emp

  WHERE empno = v_empno;

 

  --输出指定员工的信息

  dbms_output.put_line('员工姓名:' || v_emp.v_ename ||

                       ',员工工资:' || v_emp.v_sal ||

                       ',部门编号:' || v_emp.v_deptno);

EXCEPTION

  WHEN no_data_foundTHEN

    dbms_output.put_line('你输入的工号不存在!');

END;                      

 

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

DECLARE

    v_ename emp.ename%TYPE;

    v_sal emp.sal%TYPE;

    v_deptno emp.deptno%TYPE:=&deptno;

   

BEGIN

  SELECT ename,sal

  INTO v_ename,v_sal

  FROM emp

  WHERE deptno = v_deptno;

 

  dbms_output.put_line('员工姓名:' || v_emp.v_ename ||

                       ',员工工资:' || v_emp.v_sal ||

                       ',部门编号:' || v_emp.v_deptno);

EXCEPTION

  WHEN no_data_foundTHEN

    dbms_output.put_line('你输入的部门编号不存在!');

    WHEN too_many_rowsTHEN

    dbms_output.put_line('查询返回多行记录!');

    WHENOTHERSTHEN

    dbms_output.put_line('发生其他异常!');

END

 

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

--loop-exit-end

DECLARE

  v_num NUMBER:=0;

BEGIN

  LOOP

    v_num:=v_num+1;

    EXITWHEN (v_num =10);--表示退出条件

  ENDLOOP;

  dbms_output.put_line('v_num:' || v_num);

END;

 

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

--while-loop-end

DECLARE

  v_num NUMBER:=0;

 

BEGIN

  WHILE v_num<10LOOP

    v_num := v_num +1;

  ENDLOOP;

  dbms_output.put_line('v_num:' || v_num);

END;

 

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

--for-in-loop-end

DECLARE

  v_num NUMBER:=0;

  i NUMBER;

 

BEGIN

  FOR iIN1..10LOOP  --in后加reversei--操作

    dbms_output.put_line('i=' || i);

    v_num := v_num +1;

  ENDLOOP;

  dbms_output.put_line('v_num:' || v_num);

END;

原创粉丝点击