Cursores de actualización

Declaración y utiización de cursores de actualización.

    Los cursores de actualización se declarán igual que los cursores explicitos, añadieno FOR UPDATE al final de la sentencia select.


CURSOR nombre_cursor IS instrucción_SELECT
FOR UPDATE

   Para actualizar los datos del cursor hay que ejecutar una sentencia UPDATE especificando la clausula WHERE CURRENT OF <cursor_name>.


UPDATE <nombre_tabla> SET
<campo_1> = <valor_1>
[,<campo_2> = <valor_2>]
WHERE CURRENT OF <cursor_name>

    El siguiente ejemplo muestra el uso de un cursor de actualización:


DECLARE
CURSOR cpaises IS
select CO_PAIS, DESCRIPCION, CONTINENTE
from paises
FOR UPDATE;
co_pais VARCHAR2(3);
descripcion VARCHAR2(
50);
continente VARCHAR2(
25);
BEGIN
OPEN cpaises;
FETCH cpaises INTO co_pais,descripcion,continente;
WHILE cpaises%found
LOOP
UPDATE PAISES
SET CONTINENTE = CONTINENTE || '.'
WHERE CURRENT OF cpaises;

FETCH cpaises INTO co_pais,descripcion,continente;
END LOOP;
CLOSE cpaises;
COMMIT;

END;

    Cuando trabajamos con cursores de actualización debemos tener en cuenta las siguientes consideraciones:

  • Los cursores de actualización generan bloqueos en la base de datos.

 

Pedro  Herrarte  Sánchez
Cursores de actualización en PL/SQL
Pedro Herrarte Sánchez

Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación. Posee mas de diez años de experiencia trabajando para las principales empresas de España. Es especialista en tecnologías .NET, entornos Web (ASP.NET, ASP.NET MVC,jQuery, HTML5), bases de datos (SQL Server y ORACLE) e integración de sistemas. Es experto en desarrollo (C#, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE). Pedro es MCP y MAP 2012, es fundador, diseñador y programador de www.devjoker.com..
Fecha de alta:01/06/2006
Última actualizacion:01/06/2006
Visitas totales:218218
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com