请问下面两个游标在使用中的性能有什么区别吗?
--cursor 1
SET SERVERIUTPUT ON
DECLARE
R_emp EMP%ROWTYPE;
CURSOR c_emp IS SELECT * FROM emp;
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp INTO r_emp;
EXIT WHEN c_emp%NOTFOUND;
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||r_emp.ename||'is'|| r_emp.salary);
END LOOP;
CLOSE c_emp;
END; -- cursor 2
SET SERVERIUTPUT ON
DECLARE
R_emp EMP%ROWTYPE;
CURSOR c_emp IS SELECT * FROM emp;
BEGIN
FOR C_emp IN R_emp
LOOP
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||C_emp.ename||'is'|| C_emp.salary);
END LOOP;
END;
--cursor 1
SET SERVERIUTPUT ON
DECLARE
R_emp EMP%ROWTYPE;
CURSOR c_emp IS SELECT * FROM emp;
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp INTO r_emp;
EXIT WHEN c_emp%NOTFOUND;
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||r_emp.ename||'is'|| r_emp.salary);
END LOOP;
CLOSE c_emp;
END; -- cursor 2
SET SERVERIUTPUT ON
DECLARE
R_emp EMP%ROWTYPE;
CURSOR c_emp IS SELECT * FROM emp;
BEGIN
FOR C_emp IN R_emp
LOOP
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||C_emp.ename||'is'|| C_emp.salary);
END LOOP;
END;
--cursor 1
SET SERVERIUTPUT ON
DECLARE
R_emp EMP%ROWTYPE;
CURSOR c_emp IS SELECT * FROM emp;
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp INTO r_emp;
EXIT WHEN c_emp%NOTFOUND;
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||r_emp.ename||'is'|| r_emp.salary);
END LOOP;
CLOSE c_emp;
END; -- cursor 2
SET SERVERIUTPUT ON
DECLARE
CURSOR R_emp IS SELECT * FROM emp;
BEGIN
FOR C_emp IN R_emp
LOOP
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||C_emp.ename||'is'|| C_emp.salary);
END LOOP;
END;
FOR C_emp IN (SELECT * FROM emp)
LOOP
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||C_emp.ename||'is'|| C_emp.salary);
END LOOP;
这里就没定义游标。