sql >> Base de Datos >  >> RDS >> Oracle

Pasar la lista definida por el usuario de hibernate al procedimiento almacenado de Oracle

  1. Crear tipo OBJECT, digamos MyType is OBJECT .... en Oracle que tiene todos los campos que necesita
  2. Crear tipo de colección, TableOfMyObject IS TABLE OF MyObjectType
  3. Crear procedimiento que tome TableOfMyObject como parámetro.

Puede usar la variable de colección en declaraciones SQL en su procedimiento almacenado como SELECT * FROM TABLE(collection_variable)

Hice lo mismo, pero el mayor desafío fue llamarlo desde la aplicación usando hibernate - Finalmente encontré la manera de hacerlo.

Actualizar SQL que se puede ejecutar desde Toad.

set serveroutput on; -- for debugging, 
-- it makes sense if your procedure outputs anything
declare my_list TableOfMyObject  := TableOfMyObject ();
begin 
  my_list.extend;
  my_list(1) := MyType([MyType constructor parameters]);

  my_list.extend;
  my_list(2) := MyType([MyType constructor parameters]);
  your_procedure(my_list);
end;