游标基础
--浏览数据,输入职位,查看每个人工资
DECLARE
v_name emp.ename%TYPE; --定义用于存放游标提取的数据的变量
v_job emp.job%TYPE;
v_sal emp.sal%TYPE;
CURSOR emp_cur IS select ename,sal FROM emp WHERE job=v_job;
BEGIN
v_job:='&inputjob';
OPEN emp_cur;
DBMS_OUTPUT.PUT_LINE('Name Sal');
LOOP
FETCH emp_cur INTO v_name,v_sal; --每次只能提取一行数据,所以要放到循环里;
EXIT WHEN emp_cur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_name||' '||v_sal);
END LOOP;
CLOSE emp_cur;
END;
declare
type emp_cursor is ref cursor;
test_cursor emp_cursor;
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
open test_cursor for
select ename,sal from emp where deptno = 10;
fetch test_cursor into v_ename,v_sal;
while test_cursor%found loop
if v_sal < 200 then
update emp set sal = sal +100 where ename = v_ename;
end if;
dbms_output.put_line(v_ename || v_sal);
fetch test_cursor into v_ename,v_sal;
end loop;
end;