Oracle - Ayuda por Fvaor

 
Vista:

Ayuda por Fvaor

Publicado por Gerardo (11 intervenciones) el 14/08/2006 23:13:45
Estimados señores, de antemano gracias por su ayuda.
requiero insertar varias lineas en un form, mediante fetch
el selec es el siguiente:

cursor xxx is
select campo1,campo2,campo3,campo4
from dueño.datos
where substr(campo2, 1,10) = :num_docum;

begin
open xxx
fetch xxx into :campo1,:campo2,:campo3,:campo4;
close xxx;
end;

el asunto es que me inserta solo un registro(el Primero)
como hago para que me inserte mas registrios, Si eso lo hago con un selec me selecciona varios registros pero a la hora de ejecurarlo solo uno me inserta.

Gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda por Fvaor

Publicado por Rodolfo Reyes (445 intervenciones) el 15/08/2006 03:43:59
Te falta agregar "NEXT_RECORD;" para que cambie al siguiente registro en el Bloque, y meter el fecth en un ciclo para recorrer todos los datos del cursor.

Cursor xxx is
select campo1,campo2,campo3,campo4
from dueño.datos
where substr(campo2, 1,10) = :num_docum;

begin
open xxx
LOOP
fetch xxx into :campo1,:campo2,:campo3,:campo4;
NEXT_RECORD
EXIT WHEN xxx %NOTFOUND;
END LOOP;

close xxx;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda por Fvaor

Publicado por Gerardo Granados (11 intervenciones) el 15/08/2006 16:52:40
Don Rodolfo, muchas Gracias por su colaboracion, ya me funciona como requeria.Que tengas un buen dia.......Gerardo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda por Fvaor

Publicado por miguel (66 intervenciones) el 18/08/2006 03:57:55
a mi personalmente me gusta mas de esta forma

begin
for xxx in (select campo1,campo2,campo3,campo4
from dueño.datos
where substr(campo2, 1,10) = :num_docum) loop

campo1 := xxx.campo1;
campo2 := xxx.campo1;
campo3 := xxx.campo1;
campo4 := xxx.campo1;
end loop;

end;

Lo bueno de hacerlo asi es que no tienes el cursor en el declare ni haces fetch ni next_record ni nada de eso.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda por Fvaor

Publicado por Ruben (2 intervenciones) el 18/08/2006 17:28:24
no entiendo tu forma, porque yo lo que veo es que el grid tendrá el primer registro que se irá cambiando hasta llegar al ultimo valor del cursor, que es con el cual se ha de quedar, si no es asi, pues explicame cómo el grid cambia de un registro a otro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda por Fvaor

Publicado por miguel (66 intervenciones) el 24/08/2006 13:14:22
Que tal ruben.

No estamos trabajando con grid en el ejemplo, es solo un cursor en memoria con los datos.

Fijate que procesas cada uno de los registros por cada interaccion del for, por lo tanto siempre tendras un registro actua que sera controlado por el mismo for.

Si lo que quieres es meterlos en un grid tienes que buscar una funcion de form que te cree la nueva linea en el grid e insertar los falores actuales del registro del cursor o for.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar