Ich habe eine ältere Oracle-Datenbank (10.2g), mit der ich eine Verbindung herstelle, und ich möchte NHibernate (2.0.1) verwenden, um Objekte aus einer gespeicherten Prozedur zurückzugeben. Die gespeicherte Prozedur verwendet ein SYS_REFCURSOR, um Ergebnisse zurückzugeben. Nach der documentation sollte dies machbar sein, aber ich habe eine fewposts im Internet gefunden, die sonst vorschlagen.Gespeicherte Oracle-Prozeduren, SYS_REFCURSOR und NHibernate
Hier ist mein paraphrasierte Code:
Mapping-Datei:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="OracleStoredProcedures" namespace="OracleStoredProcedures">
<class name="Person" mutable="false">
<id name="PersonCode" type="AnsiString" column="PERSONCODE">
<generator class="assigned" />
</id>
<property name="Name" type="String" column="PERSON_NAME" />
<property name="Surname" type="String" column="PERSON_SURNAME" />
</class>
<sql-query name="getpeople">
<return class="Person" />
EXEC RS_DB.GETPERSONTEST
</sql-query>
</hibernate-mapping>
Stored Procedure:
CREATE OR REPLACE PROCEDURE RS_DB.GETPERSONTEST (
io_cursor IN OUT sys_refcursor
)
IS
BEGIN
OPEN io_cursor FOR
SELECT PERSONCODE, PERSON_NAME, PERSON_SURNAME
FROM PEOPLE
END GETPERSONTEST;
Okay, Schließlich haben wir uns das in unserem Code angeschaut. Ich hatte einen Workaround geschrieben, aber es war klatschig, um es gelinde auszudrücken. Wir haben seither auf NHibernate 3.0 aktualisiert und die Syntax in dem bereitgestellten Link ({call employmentForRegion (: regionCode)}) verwendet und es hat funktioniert !. Danke für die späte Antwort :). –