难道是oracle 的 EF 不支持游标吗?

解决方案 »

  1.   

    既然已经用了ef,为啥还要用存储过程呢,ef的目的就是解除数据库和程序的耦合,你这样两者又是强耦合了...。
    不知道楼主用的是odp的那个版本,会不会是版本问题
      

  2.   

    哦,还有,odp最新支持ef应该是32位版本,vs里面是不是也是需要设置一下
      

  3.   

    错误提示:
    ORA-06550: line 1, column 8:
    PLS-00306: wrong number or types of arguments in call to 'USP_TEST'
    ORA-06550: line 1, column 8:
    PL/SQL: Statement ignored 
    有木有人遇到哦......
      

  4.   

    类型错误吧,ef里面经常会遇到类型错误,在.net 4.0里面是这样,ef是1.0版本,比如datetime生成的sql语句后,其实必须变成datetime2,否则会报错,不知道存储过程是不是也需要,ef存储过程米有用过
      

  5.   

    很高兴,这为朋友回答我了,谢谢这个肯定不是数据类型的问题,因为就一个输入参数(varchar(2)).关键就是加上游标参数就不行,不加就好了
      

  6.   

    难道无解..........
    是不是该转java了
      

  7.   

    EF我没用过,不过调用Oracle的存储过程要返回结果集,必须传递那个游标参数,也就是你那个cur_out参数,虽然不是直接对其捕获,但是你不传递的话,执行过程本身就要报错。
      

  8.   

    http://blogs.datadirect.com/2009/06/effective-ef-with-oracle-stored-procedures-with-ref-cursors.html
      

  9.   

    http://blogs.datadirect.com/2009/06/effective-ef-with-oracle-stored-procedures-with-ref-cursors.html 
     
    好像不行,提示缺少参数
      

  10.   

    好像游标类型需要在APP.CONFIG配置一下。
    https://forums.oracle.com/forums/thread.jspa?messageID=10057743
      

  11.   

    http://www.microsofttranslator.com/bv.aspx?from=&to=zh-CHS&a=http%3A%2F%2Fdownload.oracle.com%2Foll%2Fobe%2FEntityFrameworkOBE%2FEntityFrameworkOBE.htm
    这个里面的FILE链接 下载后是EF 调用 oracle 存储过程Oracle官方源代码。
      

  12.   


    Oracle的游标我不太懂,但是肯定是支持游标的。
    你可以在存储过程上面改改,给输出一个你自定义的返回值。
      

  13.   

    Oracle的游标支持,但是需要在CONFIG文件里配置一下,再倒入存储过程。。可惜我没有调通过。
      

  14.   

    我做出来了,你要在WEB.CONFIG里面进行配置,与SQL SERVER有很大的区别,只要是返回游标的都必须配置
    例子:
     <oracle.dataaccess.client>
        <settings>
          <add name="HR.UPDATE_AND_RETURN_SALARY.RefCursor.NEW_SALARY" value="implicitRefCursor bindinfo='mode=Output'" />
          <add name="HR.UPDATE_AND_RETURN_SALARY.RefCursorMetaData.NEW_SALARY.Column.0" value="implicitRefCursor metadata='ColumnName=FIRST_NAME;BaseColumnName=FIRST_NAME;BaseSchemaName=HR;BaseTableName=EMPLOYEES;NATIVEDATATYPE=Varchar2;ProviderType=Varchar2'" />
          <add name="HR.UPDATE_AND_RETURN_SALARY.RefCursorMetaData.NEW_SALARY.Column.1" value="implicitRefCursor metadata='ColumnName=SALARY;NATIVEDATATYPE=Number;ProviderType=Int32'" />
        </settings>
      </oracle.dataaccess.client>其他的照着配置,但类型一定要对应正确,不然就要报错,很麻烦
      

  15.   

    HR.UPDATE_AND_RETURN_SALARY.RefCursor.NEW_SALARY 这个是什么?
    是我出的存储过程如果叫 getResult(游标 结果表)
    对应的配置 是getResult.结果集 吗?
      

  16.   

    可以參考一下Oracle官方的說明,其中有關於EF中Procedure的游標的具體操作說明:
    http://www.oracle.com/technetwork/issue-archive/2011/11-sep/o51odt-453447.html
      

  17.   

    http://download.oracle.com/oll/obe/EntityFrameworkOBE/EntityFrameworkOBE.htm上面的這個例子更詳細
      

  18.   

    我照着做,就是没有刷新出来, App.config 都张贴过去了,谁有遇到我这样的呢?能帮忙提醒一下吗?