You are on page 1of 4

-- ppt[14]

set serveroutput on
DECLARE
CURSOR c_emp_cursor IS
SELECT employee_id, last_name FROM employees
WHERE department_id =30;
v_empno employees.employee_id%TYPE;
v_lname employees.last_name%TYPE;
BEGIN
OPEN c_emp_cursor;
LOOP
FETCH c_emp_cursor INTO v_empno, v_lname;
EXIT WHEN c_emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( v_empno ||' '||v_lname);
END LOOP;
END;
/
-- ppt[15]
set serveroutput on
DECLARE
CURSOR c_emp_cursor IS
SELECT employee_id, last_name FROM employees
WHERE department_id =30;
v_empno employees.employee_id%TYPE;
v_lname employees.last_name%TYPE;
BEGIN
OPEN c_emp_cursor;
LOOP
FETCH c_emp_cursor INTO v_empno, v_lname;
EXIT WHEN c_emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( v_empno ||' '||v_lname);
END LOOP;
CLOSE c_emp_cursor;
END;
/
-- ppt[16]
set serveroutput on
DECLARE
CURSOR c_emp_cursor IS
SELECT employee_id, last_name FROM employees
WHERE department_id =30;
v_emp_record c_emp_cursor%ROWTYPE;
BEGIN
OPEN c_emp_cursor;
LOOP
FETCH c_emp_cursor
INTO v_emp_record;
EXIT WHEN c_emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( v_emp_record.employee_id||' '||v_emp_record.last_name)
;
END LOOP;
CLOSE c_emp_cursor;
END;
/
-- ppt[18]

set serveroutput on
DECLARE
CURSOR c_emp_cursor IS
SELECT employee_id, last_name FROM employees
WHERE department_id =30;
BEGIN
FOR emp_record IN c_emp_cursor
LOOP
DBMS_OUTPUT.PUT_LINE( emp_record.employee_id||' ' ||emp_record.last_name);
END LOOP;
END;
/
-- ppt[19]
set serveroutput on
DECLARE
CURSOR c_emp_cursor IS
SELECT employee_id, last_name FROM employees
WHERE department_id =30;
v_emp_record c_emp_cursor%ROWTYPE;
BEGIN
IF NOT c_emp_cursor%ISOPEN THEN
OPEN c_emp_cursor;
END IF;
LOOP
FETCH c_emp_cursor
INTO v_emp_record;
EXIT WHEN c_emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( v_emp_record.employee_id||' '||v_emp_record.last_name)
;
END LOOP;
IF c_emp_cursor%ISOPEN THEN
CLOSE c_emp_cursor;
END IF;
END;
/
-- ppt[21]
set serveroutput on
DECLARE
CURSOR c_emp_cursor IS
SELECT employee_id, last_name FROM employees;
v_emp_record c_emp_cursor%ROWTYPE;
BEGIN
OPEN c_emp_cursor;
LOOP
FETCH c_emp_cursor INTO v_emp_record;
EXIT WHEN c_emp_cursor%ROWCOUNT > 10 OR c_emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('=>'||c_emp_cursor%ROWCOUNT);
DBMS_OUTPUT.PUT_LINE( v_emp_record.employee_id ||' '||v_emp_record.last_name)
;
END LOOP;
CLOSE c_emp_cursor;
END;
/
-- ppt[22]

set serveroutput on
BEGIN
FOR emp_record IN (SELECT employee_id, last_name
FROM employees WHERE department_id =30)
LOOP
DBMS_OUTPUT.PUT_LINE( emp_record.employee_id ||' '||emp_record.last_name);
END LOOP;
END;
/

drop table my_table;


truncate table my_table;
create table my_table(oid varchar(6), data varchar(100));
begin
for i in 1..10000 loop
insert into my_table values (i, 'data de '||i);
end loop;
commit;
end;
select count(*) from my_table;
set serveroutput on
set timing on
DECLARE
CURSOR c_cur IS SELECT * FROM my_table;
v_rec c_cur%ROWTYPE;
BEGIN
OPEN c_cur;
LOOP
FETCH c_cur INTO v_rec;
EXIT WHEN c_cur%NOTFOUND;
update my_table set data=upper(data) where oid = v_rec.oid;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Record processed:'||c_cur%rowcount);
CLOSE c_cur;
rollback;
END;
/
set serveroutput on
set timing on
DECLARE
CURSOR c_cur IS SELECT * FROM my_table for update;
v_rec c_cur%ROWTYPE;
BEGIN
OPEN c_cur;
LOOP
FETCH c_cur INTO v_rec;
EXIT WHEN c_cur%NOTFOUND;
update my_table set data=upper(data) where current of c_cur;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Record processed:'||c_cur%rowcount);
CLOSE c_cur;
rollback;

END;
/

You might also like