我有一个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的结构来引用。
我的实体框架是5.0,我使用VS 2012。
我还需要在元数据中包含哪些内容?
我的基础SUPERMARKET表结构是:
Name Null Type
--------------- ---- ------------
StoreId NUMBER
ProductCategory VARCHAR2(20)
ProductId VARCHAR2(20)