【问题标题】:PLSQL stored procedure returns no values in Entity FrameworkPLSQL 存储过程在实体框架中不返回任何值
【发布时间】:2012-07-19 05:53:57
【问题描述】:

我有一个有效的 plsql oracle 存储过程(我已经在 plsql 中对其进行了测试,它返回了正确的值):

  PROCEDURE FetchCode(code OUT NUMBER) IS
  BEGIN
      SELECT MYSEQ.NEXTVAL INTO code FROM DUAL;    
  END FetchCode;

以及使用实体框架的视觉工作室解决方案。

csdl文件包含

      <FunctionImport Name="FETCHCODE" ReturnType="Collection(Decimal)">
      <Parameter Name="CODE" Mode="Out" Type="Decimal" />
      </FunctionImport>

我已成功将上述函数拉入实体,但是当我尝试“获取列信息”按钮时,我收到“所选存储过程不返回任何列”。消息。

在编辑功能导入下我可以看到它:

返回一个集合 标量:十进制

数据类型设置为“数字”,方向为“输出”。

谁能帮忙解释一下为什么像这样的 sp 可以在 plsql 上工作,但不能在 Visual Studio 上工作?

【问题讨论】:

    标签: visual-studio-2010 oracle entity-framework stored-procedures plsqldeveloper


    【解决方案1】:

    试试

    CREATE or REPLACE FUNCTION FetchCode IS
    RETURN NUMBER
    DECLARE
      code   NUMBER(10);
      BEGIN
          SELECT MYSEQ.NEXTVAL INTO code FROM DUAL;    
          RETURN code;
      END FetchCode;
    

    通常,Oracle 中的函数能够返回值,这与通过 OUT or IN OUT 变量访问输出的过程不同。

    【讨论】:

      【解决方案2】:

      试试下面的

        CREATE OR REPLACE PROCEDURE FetchCode
        (
           results_ OUT SYS_REFCURSOR
        ) IS
        BEGIN
            OPEN results_ FOR 
            SELECT MYSEQ.NEXTVAL As Code FROM DUAL;    
        END FetchCode;
      

      【讨论】:

      • 我尝试了这个解决方案,csdl文件更改为以下内容: 我试图获取列信息并在执行时完全退出“编辑函数导入”窗口。不幸的是,它似乎仍然没有在 edmx/vs 方面返回任何内容。
      猜你喜欢
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多