Oracle存储过程,SYS_REFCURSOR和NHibernate [英] Oracle stored procedures, SYS_REFCURSOR and NHibernate

查看:238
本文介绍了Oracle存储过程,SYS_REFCURSOR和NHibernate的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我连接到传统的Oracle(10.2克)数据库和我想使用NHibernate的(2.0.1)给我回的对象从存储过程。在考虑中的存储过程使用SYS_REFCURSOR返回结果。按照文档这应该是可行的,但我发现一个几个职位,否则建议在互联网上



下面是我的意译代码:



映射文件:

 < XML版本=1.0编码=UTF-8>?; 
<休眠映射的xmlns =金塔:NHibernate的映射 - 2.2
装配=OracleStoredProcedures命名空间=OracleStoredProcedures>
<类名=人可变=false的>
< ID名称=PersonCodeTYPE =AnsiString类型一栏=PERSONCODE>
<生成器类=分配/>
< / ID>
<属性名=姓名类型=字符串栏=PERSON_NAME/>
<属性名=姓氏类型=字符串栏=PERSON_SURNAME/>
< /班>

< SQL查询的名称=getpeople>
<返回类=人/>

EXEC RS_DB.GETPERSONTEST

< / SQL查询>
< /休眠映射>



存储过程:

  CREATE OR REPLACE PROCEDURE RS_DB.GETPERSONTEST(
io_cursor IN OUT SYS_REFCURSOR


BEGIN
打开io_cursor对于
选择PERSONCODE ,PERSON_NAME,PERSON_SURNAME
距离人民

端GETPERSONTEST;


解决方案

据我记得这是一个错误我也发现一对夫妇几年前与甲骨文工作的时候,我已经在NH跟踪回溯问题,是固定的,但对2.1.1GA版本;您可以验证这是你有同样的问题?
https://nhibernate.jira.com/browse/NH-847


I have a legacy Oracle (10.2g) database that I'm connecting to and I'd like to use NHibernate (2.0.1) to give me back objects from a stored procedure. The stored procedure in question uses a SYS_REFCURSOR to return results. According to the documentation this should be doable but I've found a few posts on the internet that suggest otherwise.

Here's my paraphrased code:

Mapping file:

<?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;

解决方案

As far as I remember this was a bug I also found a couple of years ago when working with oracle, I've tracked back the issue in NH tracker and is fixed but on version 2.1.1GA; Can you verify that this is the same problem you have? https://nhibernate.jira.com/browse/NH-847

这篇关于Oracle存储过程,SYS_REFCURSOR和NHibernate的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆