2

我有一个 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) 
4

0 回答 0