Tengo una base de datos heredada de Oracle (10.2g) a la que me estoy conectando y me gustaría usar NHibernate (2.0.1) para devolver los objetos de un procedimiento almacenado. El procedimiento almacenado en cuestión utiliza un SYS_REFCURSOR para devolver los resultados. De acuerdo con el documentation esto debería ser factible, pero he encontrado un fewposts en Internet que sugieren lo contrario.Procedimientos almacenados de Oracle, SYS_REFCURSOR y NHibernate
Aquí está mi código parafraseada:
archivo de asignación:
<?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>
procedimiento almacenado:
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;
bien, finalmente nos decidimos a mirar esto en nuestro código. Había escrito una solución, pero fue kludgy por decir lo menos. Desde entonces nos hemos actualizado a NHibernate 3.0 y usamos la sintaxis en el enlace proporcionado ({call employmentsForRegion (: regionCode)}) y funcionó !. Gracias por la respuesta tardía :). –