游标,动态,for循环
来源:互联网 发布:淘宝卖家货到付款流程 编辑:程序博客网 时间:2024/05/16 09:21
--小测:输出各部门员工的部门名称和工号、姓名,工资。
·三种实现方式
1 通过显式游标
2 通过FOR循环
3 通过动态SQL方式
- declare
- type emp_dept is record(
- name dept.dname%type,
- loc dept.loc%type,
- empno emp.empno%type,
- ename emp.ename%type,
- sal emp.sal%type);
- emp_table emp_dept;
- cursor cur_emp is
- select d.dname, d.loc, e.empno, e.ename, e.sal
- from emp e, dept d
- where d.deptno = e.deptno
- order by e.deptno, e.sal desc;
- begin
- open cur_emp;
- fetch cur_emp
- into emp_table;
- loop
- if emp_table.loc = 'DALLAS' THEN
- dbms_output.put_line(emp_table.loc || '*' || '-->' || emp_table.name ||
- '-->' || emp_table.empno || '-->' ||
- emp_table.sal);
- else
- dbms_output.put_line(emp_table.loc || '-->' || emp_table.name ||
- '-->' || emp_table.empno || '-->' ||
- emp_table.sal);
- end if;
- fetch cur_emp
- into emp_table;
- exit when cur_emp%notfound;
- end loop;
- close cur_emp;
- end;
- ----不用if else
- begin
- for x in (select(case when d.loc='DALLAS'
- then d.loc||'*' else d.loc
- end),d.dname,e.empno,e.ename,e.sal from emp e,dept d where d.deptno=e.deptno order by e.deptno,e.sal desc)
- loop
- dbms_output.put_line(x.loc||'-->'||x.dname||'-->'||x.empno||'-->'||x.sal);
- end loop;
- END;
-------------------------------for循环
- begin
- for x in (select d.dname,d.loc,e.empno,e.ename,e.sal from emp e,dept d where d.deptno=e.deptno order by e.deptno,e.sal desc)
- loop
- if x.loc='DALLAS' then
- x.loc:=x.loc||'*';
- end if;
- dbms_output.put_line(x.loc||'-->'||x.dname||'-->'||x.empno||'-->'||x.sal);
- end loop;
- END;
- <span style="background-color: rgb(255, 255, 255);">declare
- cursor cur_emp is select d.dname, d.loc, e.empno, e.ename, e.sal
- from emp e, dept d
- where d.deptno = e.deptno
- order by e.deptno, e.sal desc;
- type emp_table_type is table of cur_emp%rowtype index by binary_integer;
- emp_table emp_table_type;
- str_sql varchar2(1000);
- begin
- str_sql := 'select d.dname, d.loc, e.empno, e.ename, e.sal
- from emp e, dept d
- where d.deptno = e.deptno
- order by e.deptno, e.sal desc';
- execute immediate str_sql bulk collect into emp_table;
- for i in 1 .. emp_table.count
- loop
- if emp_table(i).loc = 'DALLAS' THEN
- dbms_output.put_line(emp_table(i).loc || '*' || '-->' || emp_table(i).dname ||
- '-->' || emp_table(i).empno || '-->' ||
- emp_table(i).sal);
- else
- dbms_output.put_line(emp_table(i).loc || '-->' || emp_table(i).dname ||
- '-->' || emp_table(i).empno || '-->' ||
- emp_table(i).sal);
- end if;
- end loop;
- end;</span>
0 0
- 游标,动态,for循环
- 游标,动态,for循环
- 如何在游标for循环中使用动态SQL语句?
- Oracle 游标for循环
- 游标的FOR循环
- 游标的for循环
- Oracle游标for循环
- oracle游标:fetch和for循环游标
- MYSQL游标嵌套循环 动态游标
- PL/SQL 游标FOR循环
- SQL中的循环、for循环、游标
- SQL中的循环、for循环、游标
- SQL中的循环、for循环、游标
- SQL中的循环、for循环、游标
- SQL中的循环、for循环、游标
- SQL中的循环、for循环、游标
- SQL中的循环、for循环、游标
- sql中的循环,for循环,游标实现
- 新进员工培训资料 ——职业素养篇
- C++中类的特殊数据成员的构造
- JVM的内存管理
- uva1232
- 【CBIR】List of CBIR engines
- 游标,动态,for循环
- JSP自定义标签
- Testing Opencv读存图片
- POJ 3904 Sky Code (容斥原理)
- java 插入排序+快速排序
- 斐波那契数列的递归和非递归实现
- UESTC1307 windy数 数位DP
- jsp页面静态化
- 如何在新公司尽快适应