|
说明:该程序通过定义游标emp_cursor,提取并显示雇员7788的名称和职务。? 作为对以上例子的改进,在以下训练中采用了记录变量。? 【训练2】? 用游标提取emp表中7788雇员的姓名、职务和工资。?
Sql代码?
- SET?SERVEROUTPUT?ON??
- ????????DECLARE??
- ?????????CURSOR?emp_cursor?IS??SELECT?ename,job,sal?FROM?emp?WHERE?empno=7788; ??
- ?????????emp_record?emp_cursor%ROWTYPE; ??
- ????????BEGIN??
- OPEN?emp_cursor;???? ??
- ????????FETCH?emp_cursor?INTO?emp_record; ??
- ???????????DBMS_OUTPUT.PUT_LINE(emp_record.ename||‘,‘||?emp_record.job||‘,‘||?emp_record.sal); ??
- ?????????CLOSE?emp_cursor; ??
- ????????END;??
执行结果为:?
Sql代码?
- SCOTT,ANALYST,3000 ??
- ????????PL/SQL?过程已成功完成。???
说明:实例中使用记录变量来接收数据,记录变量由游标变量定义,需要出现在游标定义之后。? 注意:可通过以下形式获得记录变量的内容:? 记录变量名.字段名。? 【训练3】? 显示工资最高的前3名雇员的名称和工资。?
Sql代码?
- SET?SERVEROUTPUT?ON??
- ????????DECLARE??
- ?????????V_ename?VARCHAR2(10); ??
- ????????V_sal?NUMBER(5); ??
- ????????CURSOR?emp_cursor?IS??SELECT?ename,sal?FROM?emp?ORDER?BY?sal?DESC; ??
- ????????BEGIN??
- ?????????OPEN?emp_cursor; ??
- ?????????FOR?I?IN?1..3?LOOP ??
- ???????????FETCH?emp_cursor?INTO?v_ename,v_sal; ??
- ?????????DBMS_OUTPUT.PUT_LINE(v_ename||‘,‘||v_sal); ??
- ??????????END?LOOP; ??
- ?????????CLOSE?emp_cursor; ??
- ?????????END;??
执行结果为:?
Sql代码?
- KING,5000 ??
- ?????SCOTT,3000 ??
- ?????FORD,3000 ??
- ?????PL/SQL?过程已成功完成。??
? 说明:该程序在游标定义中使用了ORDER BY子句进行排序,并使用循环语句来提取多行数据。? 游标循环? 【训练1】? 使用特殊的FOR循环形式显示全部雇员的编号和名称。?
Sql代码?
- SET?SERVEROUTPUT?ON??
- DECLARE??
- ??CURSOR?emp_cursor?IS? ??
- ??SELECT?empno,?ename?FROM?emp; ??
- BEGIN??
- FOR?Emp_record?IN?emp_cursor?LOOP??? ??
- ????DBMS_OUTPUT.PUT_LINE(Emp_record.empno||?Emp_record.ename); ??
- ????END?LOOP; ??
- ????END;??
执行结果为:?
Sql代码?
- 7369SMITH ??
- 7499ALLEN ??
- 7521WARD ??
- 7566JONES ??
- ?????????PL/SQL?过程已成功完成。??
(编辑:PHP编程网 - 湛江站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|