 |
|
 |
Cursores Implicitos
Declaración de cursores implicitos.
Los cursores implicitos se utilizan para realizar consultas SELECT que devuelven un único registro.
Deben tenerse en cuenta los siguientes puntos cuando se utilizan cursores implicitos:
- Con cada cursor implicito debe existir la palabra clave INTO.
- Las variables que reciben los datos devueltos por el cursor tienen que contener el mismo tipo de dato que las columnas de la tabla.
- Los cursores implicitos solo pueden devolver una única fila. En caso de que se devuelva más de una fila (o ninguna fila) se producirá una excepcion. No se preocupe si aún no sabe que es una excepcion, le valdrá conocer que es el medio por el que PL/SQL gestiona los errores.
El siguiente ejemplo muestra un cursor implicito:
declare
vdescripcion VARCHAR2(50); begin SELECT DESCRIPCION INTO vdescripcion from PAISES WHERE CO_PAIS = 'ESP'; dbms_output.put_line('La lectura del cursor es: ' || vdescripcion);
end;
|
La salida del programa generaría la siguiente línea:
La lectura del cursor es: ESPAÑA
|
Excepciones asociadas a los cursores implicitos.
Los cursores implicitos sólo pueden devolver una fila, por lo que pueden producirse determinadas excepciones. Las más comunes que se pueden encontrar son no_data_found y too_many_rows. La siguiente tabla explica brevemente estas excepciones.
|
Excepcion |
Explicacion |
| NO_DATA_FOUND |
Se produce cuando una sentencia SELECT intenta recuperar datos pero ninguna fila satisface sus condiciones. Es decir, cuando "no hay datos" |
| TOO_MANY_ROWS |
Dado que cada cursor implicito sólo es capaz de recuperar una fila , esta excepcion detecta la existencia de más de una fila. | |
| |
 |
Que grande eres macho!
por
Kike
Respuesta recibida el [06/03/2008 12:23:17]
|
 |
Muchas gracias sr Pedro. Me sirve de gran ayuda todo esto de verdad, gracias.
|
| |
 |
gracias
por
Rod
Respuesta recibida el [17/04/2008 09:25:59]
|
 |
para no saber nada de pl me ha quedado claro, y de hecho hice una funcion y resulta jajaja , gracias!!
|
| |
 |
Duda
por
Juan Pedro
Respuesta recibida el [22/04/2008 04:17:28]
|
 |
El cursor impliciso solo se puede usar para obtener unqa dato o se puede usar para obtener una row con varios item o uno. Si es la segunda occion como obtendrias el valor Dato(0),dato(1).
|
| |
 |
error NO_DATA_FOUND
por
ROBERTO
Respuesta recibida el [24/04/2008 12:33:01]
|
 |
al ejecutar: FETCH cNIVEL_01 INTO rPump_Readings_Header; se produce el error NO_DATA_FOUND, porq no ha traido ningún registro, ¿cómo puedo desactivar ese error? para continuar con las siguientes lecturas...
|
| |
 |
Está guay el tutorial, así da ...
por
JL
Respuesta recibida el [06/05/2008 05:04:29]
|
 |
Está guay el tutorial, así da gusto aprender
|
| |
 |
Liberar Cursor
por
Adrian Lozano
Respuesta recibida el [22/05/2008 02:09:32]
|
 |
Alguna manera para liberar un cursor implicito?
Ya que despues de utilizar el cursor requiero hacer un update en el registro donde estaba posicionado ese cursor y se cuelga la aplicacion.. =(
|
| |
 |
Problema con fechas
por
Abraham
Respuesta recibida el [15/09/2008 01:40:05]
|
 |
Como se declaran las fechas cuando son parametros de entrada o salida en un procedimiento, gracias.
|
| |
 |
BORRAR CON UN SELECT MULTIPLE
por
Y.M.
Respuesta recibida el [27/09/2008 11:00:00]
|
 |
tengo un problema agradeceria la ayuda de algun de ustedes compañeros
tengo el siguiente select:
SELECT A.UBICACION FROM COPIA_IF41 A, GSPR B WHERE A.CODCIA = NVL(:I_CODCIA,A.CODCIA) AND A.CODIGO_SUCURSAL = B.CODIGO_SUCURSAL AND A.CODIGO_SUCURSAL = NVL(:I_SUCURSAL,A.CODIGO_SUCURSAL) --AND B.USUARIO = USER MINUS SELECT LOCAL UBICACION FROM COPIA_IF74 WHERE CODBOD = NVL(:I_CODBOD,CODBOD) ORDER BY UBICACION
y desearia borrar los registros que trae este select. ya verifique el select y me trae los registros que deseo borrar, solo me falta la parte de borrarlos help me!!!
|
| |
 |
repuesta para y.m
por
macu
Respuesta recibida el [16/10/2008 03:48:48]
|
 |
hola para borrar solo tienes que utilizar drop table y el nombre de la tabla; ahora si solo quieres borrar una fila o colunma utiliza el delete no es dificil
|
| |
 |
CURSORES
por
SIDER
Respuesta recibida el [25/11/2008 11:10:32]
|
 |
Los cursores se pueden utilizar en los procedimientos o solo se pueden utilizar en funciones ademas ¿en un procedimiento se puede hacer un insert en una tabla ho no? grasias de antemano
|
| |
 |
cursores
por
Soni
Respuesta recibida el [30/03/2009 03:30:04]
|
 |
Es muy bueno este tutorial.. y he practicado muchísimo!! .. Para SIDER hasta ahora por lo general he usado cursores dentro de procedimientos mas no en funciones... y dentro de los procecimientos por supuesto que puedes hacer uso de sentencias dml como insert, update y delete.
|
| |
 |
excelente
por
zapata
Respuesta recibida el [19/05/2009 10:20:24]
|
 |
excelente tutorial gracias saludos desde mexico
|
| |
 |
se agradece
por
batto
Respuesta recibida el [08/06/2009 12:56:34]
|
 |
pos eso, es un buen tutorial como pocos he encontrado por la red. Nunca habia entendido cursores hasta llegar aqui, gracias amigo ;) from spain
|
| |
 |
no ejecuta el cursos
por
cotty
Respuesta recibida el [03/08/2009 11:35:23]
|
 |
estuve probando el cursor, pero solo dice procedimiento ejecutado correctamente, y no em devuelve el resultado. que puedo hacer?
|
| |
 |
bulk collect vs no_data_found
por
fernando garin
Respuesta recibida el [03/08/2009 03:06:40]
|
 |
estoy usando bulk collect en vez de into, puede ser que por eso no me funcione la excepcion no_data_found? gracias
|
| |
 |
Ayuda Borrado
por
Alejo
Respuesta recibida el [09/11/2009 08:13:14]
|
 |
Que pena Y.M. que penas leo tu comentario y si aun en algo te puede ayudar para ti o para cualquiera la forma de borrarlos seria algo asi.
DELETE COPIA_IF41 WHERE UBICACION IN (SELECT A.UBICACION FROM COPIA_IF41 A, GSPR B WHERE A.CODCIA = NVL(:I_CODCIA,A.CODCIA) AND A.CODIGO_SUCURSAL = B.CODIGO_SUCURSAL AND A.CODIGO_SUCURSAL = NVL(:I_SUCURSAL,A.CODIGO_SUCURSAL) --AND B.USUARIO = USER MINUS SELECT LOCAL UBICACION FROM COPIA_IF74 WHERE CODBOD = NVL(:I_CODBOD,CODBOD) ORDER BY UBICACION);
Espero les sirva. Ten en cuenta que lo mejor seria que "UBICACION" fuera una PK
|
| |
 |
no ejecuta el cursor
por
CHEMA
Respuesta recibida el [03/01/2010 01:27:20]
|
 |
Para cotty, prueba en SQL * Plus a escribir lo siguiente:
set serveroutput on
Es una variable del entorno de oracle que debe de estar en 'on' con el fin de que presente los mensajes que quieras mostrar en tus procedimientos creados.
Un saludo.
|
| |
 |
Gran Explicación
por
Moises
Respuesta recibida el [24/02/2010 05:54:24]
|
 |
Saludos,
Muchas gracias Sr. Herrarte. Yo soy un alumno nuevo que estudia Sistema y eh aprendido mucho de estos manuales...
Si algien pudiera mandarme manuales de PL/SQL se lo voy agradecer. MOISESKLK@HOTMAIL.COM
|
| |
 |
Excelente todo
por
Jose Taveras
Respuesta recibida el [03/03/2010 09:15:26]
|
 |
Gracias por tomarse la molestia de hacer este documento. Es muy bueno y bien resumido.
Mil Gracias Sr. Pedro. desde Republica Dominicana.
|
| Añadir comentario ... |
Para preguntar utiliza los foros
|
|

|
Cursores Implicitos en PL/SQL |
|
Autor:
Pedro Herrarte Sánchez
|
|
Visitas:
102814 |
Fecha de publicación:
24/05/2006 |
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, bases de datos (SQL Server y ORACLE) e integración de sistemas.
Es experto en desarrollo (C#, ASP.NET, 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).
Es fundador, diseñador y programador de www.devjoker.com. |
|
|
Visitas:
110
|
Comentarios:
3
|
Archivo:
Articulos
|
Visitas:
809
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
765
|
Comentarios:
3
|
Archivo:
Articulos
|
Visitas:
672
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
3178
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
14564
|
Comentarios:
7
|
Archivo:
Articulos
|
Visitas:
1499
|
Comentarios:
3
|
Archivo:
Articulos
|
|
Visitas:
695
|
Comentarios:
2
|
Archivo:
Articulos
|
|
Visitas:
369
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
2034
|
Comentarios:
2
|
Archivo:
Articulos
|
|
|
 |
|
 |