Oracle存储过程、SYS_REFCURSOR和NHibernate返回对象。有问题的存储过程使用SYS_REFCURSOR返回结果。根据文档,这应该可行,但我在互联网上找到了一些其他建议。这是我的释义代码:映射文件:EXECRS_DB.GETPERSONTEST存储过程:创建或替换过程RS_DB.GETPERSONTEST(io_cursorINOUTsys_refcursor)开始打开??io_cursorFORSELECTPERSONCODE,PERSON_NAME,PERSON_SURNAMEFROMETPOPLEETPERS;据我所知,这是我多年前在使用oracle时发现的一个错误,我已经在NH跟踪器中找到了这个问题并且它已修复,但版本为2.1.1GA;你能确认这是同一个问题吗?https://nhibernate.jira.com/browse/NH-847多么痛苦啊。这终于奏效了。我把存储过程变成了一个函数。该函数返回sys_refcursor。使用与OP类似的映射并按名称查询,如下所示。{?=callRS_DB.GETPERSONTEST}link根据这个页面,你应该使用CALL而不是EXEC。我没试过这个,所以YMMV。在您的休眠状态中,您声明了一个返回类型,但Oracle程序不返回任何内容。也许如果您将它更改为返回引用游标的函数,它就可以正常工作。另外,我相信CALL是正确的语法。EXEC是SQL*Plus命令,而不是SQL语句。我今天遇到了同样的问题。我们的解决方法是使用“CALL”而不是“EXEC”,在过程调用中添加括号“()”,并用大括号“{}”将调用括起来:如果SYS_REFCURSOR和NHibernate共享的所有内容都是有用的对你和你需要了解更多C#学习教程的你,希望你多加关注——{CALLRS_DB.GETPERSONTEST()}本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
