¿Cómo se hace para devolver varios registros con un procedimiento almacenado en Oracle?

Soy novato en Oracle. Para devolver varios registros con un procedimiento almacenado creo que hay que pasar una matriz como parámetro y mediante un cursor ir recorriendo la tabla/consulta y asignárselo a dicha matriz. ¿Qué pasa si se devuelven muchas filas? ¿Se desborda la matriz? No me parece elegante. ¿Hay otra manera? En sql-server se realiza un select sin parámetros ni nada y se iguala al recordset de visual basic. ¿Cómo se igualan varias filas de resultado de Oracle a un recordset o a un control de visual basic valiéndome de un procedimiento almacenado?

1 respuesta

Respuesta
1
No se desborda la matriz... si el VB no tiene una restricción para recibirlos no tendrías que tener ningún problema. Debes averiguar como trabaja el VB, yo por ej. trababjé con Vantive que es VB Script y tenía una restricción de 19 parámetros de entrada entonces hubo que paginar el procedimiento para enviar de a 19 valores... Éxitos! :=)
Eso, que si hay otra manera sin usar una matriz. La matriz es para los registros que se devuelven, no para los parámetros.
Vas guardando el resultado de la matriz en parámetros de salida...
Ej:
FOR v_index IN 4..v_total LOOP
dbms_output.put_line( 'Index: ' || v_index);
v_record := v_table(v_index);
dbms_output.put_line('Servio Primario: '||po_servicio_primario(v_index));
END LOOP;
El problema es asignar todo el conjunto de registros a un recordset de visual basic. ¿Cómo se hace eso? En sql-server se iguala a un select directamente y no hay que usar un bucle.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas