处理单行数据用select … into
处理多行数据就必须需要使用到游标了,游标是一个SQL的结果集
处理多行数据游标必须和循环结合使用。
—显示游标—
declarecursor cur_emp isselect * from emp;
beginfor i in cur_emp loopdbms_output.put_line(i.ename || ' ' || i.sal);end loop;
end;
工作中一般都用显示游标
—隐式游标—
beginfor i in (select * from emp) loopdbms_output.put_line(i.ename || ' ' || i.sal);end loop;
end;
将游标应用到之前的控制判断工资水平中,输出多行工资水准:
declarecursor cur_emp isselect * from emp;
beginfor i in cur_emp loopcasewhen i.sal >= 700 and i.sal <= 1200 thendbms_output.put_line(i.empno || ' ' || i.ename ||' 工资真他妈低,还要不要人活了');when i.sal > 1200 and i.sal <= 1400 thendbms_output.put_line(i.empno || ' ' || i.ename ||' 工资太他妈低了');when i.sal > 1400 and i.sal <= 2000 thendbms_output.put_line(i.empno || ' ' || i.ename || ' 工资很低');when i.sal > 2000 and i.sal <= 3000 thendbms_output.put_line(i.empno || ' ' || i.ename || ' 刚好够生活');when i.sal > 3000 and i.sal <= 9999 thendbms_output.put_line(i.empno || ' ' || i.ename ||' 哥还是很牛逼的');end case; end loop;
end;
效果如下所示: