Академический Документы
Профессиональный Документы
Культура Документы
Conceptos Avanzados de
Cursores Explícitos
Al
Al final
final de
de esta
esta lecci ón podr
lección podrá:á:
•• Escribir
Escribir un
un cursor
cursor que
que utilice
utilice
parámetros
parámetros
•• Determinar
Determinar cuándo
cuándo se se necesita
necesita unauna
cláusula
cláusula FOR
FOR UPDATE
UPDATE en en un
un cursor
cursor
•• Determine
Determine cuándo
cuándo se se ha
ha de
de utilizar
utilizar la
la
clausula
clausula WHERE
WHERE CURRENT
CURRENT OF OF
•• Escribir
Escribir un
un cursor
cursor que
que utilice
utilice una
una
subconsulta
subconsulta
9-2 Copyright Oracle Corporation, 1998. All rights reserved.
Cursores con Parámetros
Sintaxis
CURSOR
CURSOR cursor_name
cursor_name
[(parameter_name
[(parameter_name datatype,
datatype, ...)]
...)]
[RETURN
[RETURN return_type]
return_type] IS
IS
select_statement;
select_statement;
Transfiera
Transfiera el
el n úmero de
número de departamento
departamento yy el
el
cargo
cargo aa la
la cl áusula WHERE.
cláusula WHERE.
Ejemplo
Ejemplo
CURSOR
CURSOR emp_cursor
emp_cursor
(v_deptno
(v_deptno NUMBER,
NUMBER, v_job
v_job VARCHAR2)
VARCHAR2) IS
IS
SELECT
SELECT ename,
ename, sal,
sal, hiredate
hiredate
FROM
FROM emp
emp
WHERE
WHERE deptno
deptno == v_deptno
v_deptno
AND
AND title
title == v_job;
v_job;
Sintaxis
Sintaxis
SELECT
SELECT ...
...
FROM
FROM ...
...
FOR
FOR UPDATE
UPDATE [OF
[OF column_reference][NOWAIT]
column_reference][NOWAIT]
•• El
El bloqueo
bloqueo explícito
explícito le
le permite
permite denegar
denegar
el
el acceso
acceso mientras
mientras dura
dura una
una
transacción.
transacción.
•• Bloquee
Bloquee las
las filas
filas antes
antes de
de la
la
actualización
actualización o o supresión.
supresión.
Sintaxis
WHERE
WHERE CURRENT
CURRENT OF
OF cursor
cursor
DECLARE
DECLARE
CURSOR
CURSOR c1
c1 IS
IS
SELECT
SELECT t1.deptno,
t1.deptno, dname,
dname, “STAFF”
“STAFF”
FROM
FROM dept
dept t1,
t1, (SELECT
(SELECT deptno,
deptno,
count(*)
count(*) “STAFF”
“STAFF”
FROM
FROM emp
emp
GROUP
GROUP BY
BY deptno)
deptno) t2
t2
WHERE
WHERE t1.deptno
t1.deptno == t2.deptno
t2.deptno
AND
AND “STAFF”
“STAFF” >=
>= 5;
5;
•• Devuelva
Devuelva distintos
distintos juegos
juegos dede resultados
resultados
utilizando
utilizando cursores
cursores con
con parámetros.
parámetros.
•• Utilice
Utilice parámetros
parámetros para
para abrir
abrir varias
varias
veces
veces unun cursor
cursor explícito
explícito en
en un
un bloque,
bloque,
devolviendo
devolviendo cada
cada vez
vez un
un juego
juego activo
activo
distinto.
distinto.
•• Defina
Defina cursores
cursores con
con subconsultas
subconsultas yy
subconsultas
subconsultas correlacionadas.
correlacionadas.
•• Manipule
Manipule cursores
cursores explícitos
explícitos con
con
comandos:
comandos:
–– Cláusula
Cláusula FOR
FOR UPDATE.
UPDATE.
–– Cláusula
Cláusula WHERE
WHERE CURRENT
CURRENT OF.
OF.
•• Declaración
Declaración yy utilización
utilización de
de cursores
cursores
explícitos
explícitos con
con parámetros
parámetros
•• Utilización
Utilización de
de un
un cursor
cursor FOR
FOR UPDATE
UPDATE