9 Conceptos Avanzados de Cursores Explícitos Copyright Oracle Corporation, 1998. All rights reserved.
Objetivos Al final de esta lección n podrá: Escribir un cursor que utilice parámetros Determinar cuándo se necesita una cláusula FOR UPDATE en un cursor Determine cuándo se ha de utilizar la clausula WHERE CURRENT OF Escribir un cursor que utilice una subconsulta 9-2 Copyright Oracle Corporation, 1998. All rights reserved.
Sintaxis Cursores con Parámetros CURSOR cursor_name [(parameter_name datatype,...)] [RETURN return_type] IS IS select_statement; Transfiera valores de parámetros a un cursor cuando se abre el cursor y se ejecuta la consulta. Abra un cursor explícito varias veces con un juego activo distinto cada vez. 9-3 Copyright Oracle Corporation, 1998. All rights reserved.
Cursores con Parámetros Transfiera el número n de departamento y el cargo a la cláusula WHERE. Ejemplo CURSOR emp_cursor (v_deptno NUMBER, v_job VARCHAR2) IS IS SELECT ename, sal, hiredate FROM emp WHERE deptno = v_deptno AND title = v_job; 9-4 Copyright Oracle Corporation, 1998. All rights reserved.
La Cláusula FOR UPDATE Sintaxis SELECT... FROM... FOR UPDATE [OF column_reference][nowait] El bloqueo explícito le permite denegar el acceso mientras dura una transacción. Bloquee las filas antes de la actualización o supresión. 9-5 Copyright Oracle Corporation, 1998. All rights reserved.
La Cláusula FOR UPDATE Recupere los pedidos de importes superiores a 1000$ que se han procesado hoy. Ejemplo DECLARE CURSOR c1 c1 IS IS SELECT custid, ordid FROM ord WHERE orderdate = SYSDATE AND total > 1000.00 ORDER BY BY custid FOR UPDATE NOWAIT; 9-6 Copyright Oracle Corporation, 1998. All rights reserved.
Cláusula WHERE CURRENT OF Sintaxis WHERE CURRENT OF OF cursor Utilice cursores para actualizar o suprimir la fila actual. Incluya la cláusula FOR UPDATE en la consulta del cursor para bloquear primero las filas. Utilice la cláusula WHERE CURRENT OF para hacer referencia a la fila actual desde un cursor explícito. 9-7 Copyright Oracle Corporation, 1998. All rights reserved.
Cláusula WHERE CURRENT OF Ejemplo... CURSOR emp_cursor IS IS SELECT... FOR UPDATE; BEGIN... FOR emp_record IN IN emp_cursor LOOP UPDATE... WHERE CURRENT OF OF emp_cursor;... END LOOP; COMMIT; END; 9-8 Copyright Oracle Corporation, 1998. All rights reserved.
Cursores con Subconsultas Ejemplo DECLARE CURSOR c1 c1 IS IS SELECT t1.deptno, dname, STAFF FROM dept t1, (SELECT deptno, count(*) STAFF FROM emp GROUP BY BY deptno) t2 t2 WHERE t1.deptno = t2.deptno AND STAFF >= >= 5; 5; 9-9 Copyright Oracle Corporation, 1998. All rights reserved.
Resumen Devuelva distintos juegos de resultados utilizando cursores con parámetros. Utilice parámetros para abrir varias veces un cursor explícito en un bloque, devolviendo cada vez un juego activo distinto. Defina cursores con subconsultas y subconsultas correlacionadas. 9-10 Copyright Oracle Corporation, 1998. All rights reserved.
Resumen Manipule cursores explícitos con comandos: Cláusula FOR UPDATE. Cláusula WHERE CURRENT OF. 9-11 Copyright Oracle Corporation, 1998. All rights reserved.
Visión General de la Práctica Declaración y utilización de cursores explícitos con parámetros Utilización de un cursor FOR UPDATE 9-12 Copyright Oracle Corporation, 1998. All rights reserved.