मेरे पास एक विरासत ओरेकल (10.2 जी) डेटाबेस है जिसे मैं कनेक्ट कर रहा हूं और मैं संग्रहीत प्रक्रिया से मुझे वापस ऑब्जेक्ट देने के लिए NHibernate (2.0.1) का उपयोग करना चाहता हूं। प्रश्न में संग्रहित प्रक्रिया परिणाम लौटने के लिए SYS_REFCURSOR का उपयोग करती है। documentation के अनुसार यह करने योग्य होना चाहिए लेकिन मुझे अन्यथा सुझाव देने वाले इंटरनेट पर fewposts मिला है।ओरेकल संग्रहीत प्रक्रियाओं, SYS_REFCURSOR और NHibernate
मानचित्रण फ़ाइल:
<?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>
संग्रहित प्रक्रिया:
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;
ठीक है, आखिरकार हमारे कोड में इसे देखने के लिए गोल हो गया। मैंने एक कामकाज लिखा था लेकिन कम से कम कहने के लिए यह कट्टरपंथी था। हमने तब से एनएचबीर्नेट 3.0 में अपग्रेड किया है और प्रदान किए गए लिंक में वाक्यविन्यास का उपयोग किया है ({कॉल नियोजन फोरगियन (: क्षेत्र कोड)} और यह काम किया! देर से जवाब के लिए धन्यवाद :)। –