Immer den return-Wert einer PL/SQL-Funktion, die über Hibernate

Habe ich eine PL/SQL-Funktion einer Oracle-Datenbank, die ich nicht ändern kann. Diese Funktion nimmt einen parameter identifiziert eine Entität, erstellt eine Kopie von dieser Entität und gibt dann die ID der Kopie. Das sieht etwas wie

FUNKTION copy_entity(id NUMBER) RETURN NUMBER

Brauche ich, um diese Funktion aufrufen aus dem Ruhezustand. Ich habe versucht, erstellen Sie eine benannte SQL-Abfragen mit so etwas wie

CALL copy_entity(:id)

als die Abfrage, aber ich kann nicht scheinen, um den Rückgabewert der Funktion. Hibernate ist "return-Skalare" und ähnliche Optionen erfordern eine Spalte name, um zurückzukehren und ich habe nicht den Namen einer Spalte aus. Dies führte mich zu

WÄHLEN Sie copy_entity(:id) ALS newEntityId

mit "return-Skalare" mit newEntityId als Spaltenname, aber das hat auch nicht funktioniert, da Oracle wirft dann eine exception, die kann ich nicht aufrufen, EINFÜGEN (zum speichern der Kopie) in eine Auswahl.

Gibt es eine Möglichkeit, um die Rückkehr Wert solch eines PL/SQL-Funktion? Die Funktion ist tatsächlich sehr viel komplexer und Bedarf noch andere Teile von der app und neu zu schreiben es ist nicht wirklich eine option.

  • Nicht "WÄHLEN Sie copy_entity(id) als rtnID von DUAL" zu arbeiten?
  • Nein, diese Ergebnisse in einer ORA-14551 Ausnahme, da es nicht erlaubt ist, um insert-oder update-aus ein Sie WÄHLEN.
Schreibe einen Kommentar