我有一个 Oracle 存储过程,它有一个我想使用 EF 5 访问的返回游标。我已经从网站上阅读了多个问题,但仍然无法让它工作。
这是我的 oracle 存储过程:
CREATE OR REPLACE PROCEDURE GETINFO
(
"StoreId" IN varchar2 , OUT_RESULT OUT SYS_REFCURSOR
)
IS
sqlstmt VARCHAR2(2000);
BEGIN
sqlstmt := 'SELECT v."StoreId", v."ProductCategory" "Product", v."ProductId"
FROM SUPERMARKET v WHERE v."StoreId"='||"StoreId";
OPEN Out_Result FOR sqlStmt;
END GETINFO;
根据 Oracle 文档,要访问 SYS_REFCURSOR,我必须在我的 App.config 中明确声明它,我这样做了:
<oracle.dataaccess.client>
<settings>
<oracle.manageddataaccess.client>
<version number="*">
<StoredProcedure schema="MYSCHEMA" name="GETINFO">
<refCursor name="OUT_RESULT">
<bindInfo mode="Output" />
<metadata columnOrdinal="0" columnName="StoreId" providerType="NUMBER" />
<metadata columnOrdinal="1" columnName="Product" providerType="Varchar2" />
<metadata columnOrdinal="2" columnName="ProductId" providerType="Varchar2" />
</refCursor>
</StoredProcedure>
</version>
</oracle.manageddataaccess.client>
</settings>
</oracle.dataaccess.client>
Oracle 文档中可能隐藏了其他关于元数据的部分,我可能必须将它们包含在 App.Config 中。结果,我仍然无法访问我的特定 SYS_REFCURSOR,因为当我单击“获取列信息”时,我什么也没有,复杂组合框中也没有任何内容。根据 Oracle 的说法,我应该有 SYS_REFCURSOR 的结构来参考。
我的实体框架是 5.0,我使用 VS 2012。
我还需要在元数据中包含什么?
我的底层 SUPERMARKET 表结构是:
Name Null Type
--------------- ---- ------------
StoreId NUMBER
ProductCategory VARCHAR2(20)
ProductId VARCHAR2(20)