gpt4 book ai didi

oracle - 无法在 Entity Framework 中映射 SYS_REFCURSOR

转载 作者:行者123 更新时间:2023-12-04 10:19:11 24 4
gpt4 key购买 nike

我正在尝试通过 Entity Framework 访问 Oracle 11g 上的存储过程。我可以访问返回标量和返回正确值的存储过程。但是当使用 SYS_REFCURSOR 用于返回结果集,函数导入时未检测到 OUT 参数 .

我的存储过程如下

create or replace PROCEDURE "GetAllClientNames" (
"ID" IN NUMBER,
"SAL" IN NUMBER,
"EMP_CURSOR" OUT SYS_REFCURSOR) IS

BEGIN


OPEN EMP_CURSOR FOR SELECT FIRSTNAME FROM CLIENTS;

END;

但是当更新实体并进行函数导入时,在导入的函数中没有检测到SYS_REFCURSOR OUT参数来检索结果集。

This is the image of imported function

请帮我解决这个问题。如果没有获取 OUT 参数,我将无法访问存储过程检索到的结果集

最佳答案

可以使用 Entity Framework 从 Oracle 存储过程返回诸如引用游标之类的复杂类型;它只需要一些额外的配置。您必须将适当的 XML 添加到配置文件中,以标识返回的引用和列的数据类型。

例子:

<oracle.dataaccess.client>
<settings>
<add name="schema.storedproc.RefCursor.ref_cursor_param_name" value="implicitRefCursor bindinfo='mode=Output'" />
<add name="schema.storedproc.RefCursorMetaData.OUT_REF_CUR.Column.0" value="implicitRefCursor metadata='ColumnName=<column_name_here>;BaseColumnName=<column_name_here>;NATIVEDATATYPE=Varchar2;ProviderType=Varchar2'" />
<add name="schema.storedproc.RefCursorMetaData.OUT_REF_CUR.Column.1" value="implicitRefCursor metadata='ColumnName=<column_name_here>;NATIVEDATATYPE=Date;ProviderType=Date'" />
<add name="schema.storedproc.RefCursorMetaData.OUT_REF_CUR.Column.2" value="implicitRefCursor metadata='ColumnName=<column_name_here>;NATIVEDATATYPE=Number;ProviderType=Int32'" />
</settings>
</oracle.dataaccess.client>

只需更换 schema.storedproc 与你的值(value)。例如 ACCOUNTING.GET_EMPLOYEES。
并替换 column_name_here 与您的专栏。如 EMP_ID。也删除尖括号。

这里有一篇全文供引用: http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/EntityFrameworkOBE/EntityFrameworkOBE.htm#t3

XML 条目的文档: http://docs.oracle.com/cd/E11882_01/win.112/e18754/featImplRefCursor.htm#ODPNT319

关于oracle - 无法在 Entity Framework 中映射 SYS_REFCURSOR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14954312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com