0

我有一个有效的 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 上工作?

4

2 回答 2

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;

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

于 2012-07-20T01:28:38.963 回答
0

尝试以下

  CREATE OR REPLACE PROCEDURE FetchCode
  (
     results_ OUT SYS_REFCURSOR
  ) IS
  BEGIN
      OPEN results_ FOR 
      SELECT MYSEQ.NEXTVAL As Code FROM DUAL;    
  END FetchCode;
于 2012-07-20T01:43:09.943 回答