EF5如何在Oracle存储过程中访问SYS_REFCURSOR

时间:2014-12-05 16:58:05

标签: oracle stored-procedures entity-framework-5 sys-refcursor

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

我可能必须在App.Config中包含有关元数据的Oracle文档中隐藏的其他部分。因此,我仍然无法访问我的特定SYS_REFCURSOR,因为当我点击获取列信息时,我什么都没有,并且复杂的组合框中没有任何内容。根据Oracle的说法,我应该使用SYS_REFCURSOR的结构来引用。

enter image description here

我的实体框架是5.0,我使用VS 2012。

我还需要在元数据中包含哪些内容?

我的基础SUPERMARKET表结​​构是:

Name            Null Type         
--------------- ---- ------------ 
StoreId              NUMBER       
ProductCategory      VARCHAR2(20) 
ProductId            VARCHAR2(20) 

0 个答案:

没有答案