Oracle函数 - VARCHAR2长度错误(PLS-00215)

时间:2013-08-12 22:39:23

标签: oracle function stored-procedures

在过去的2个小时里我一直在搞乱这个问题,似乎找不到任何有用的东西(我已经阅读了一些解决方案,但对我来说他们没有工作)。我有以下create function语句:

CREATE FUNCTION GetBatchApprovalEmail(net_id IN NUMBER)
  RETURN VARCHAR2
IS
  email_address VARCHAR2(255);

  CURSOR C1 IS
    SELECT T1.approve_email
      FROM LMS.LMS_STATUS_EMAIL T1
        WHERE T1.NET_ID = net_id
BEGIN

  OPEN C1;
  FETCH C1 into email_address;
  CLOSE C1;

  RETURN email_address;
END;
/

出于某种原因,执行此声明后我得到了

PLS-00215 error (String length constraints must be in range(1 .. 32767))

我一直在阅读,而且大多数人都说只是为VARCHAR2声明了一个大小,但我已经尝试了它并没有什么区别。

有没有人有任何想法? PS我对PL/SQL相当新,所以可能的其他事情都不正确。

1 个答案:

答案 0 :(得分:0)

您的功能几乎没有错误。请查看以下内容以了解这些

CREATE FUNCTION GetBatchApprovalEmail(net_id IN NUMBER)
  RETURN VARCHAR2
IS
  email_address VARCHAR2(255);

  CURSOR C1(num number) IS           ---Using passed parameter to the cursor
    SELECT T1.approve_email
      FROM LMS.LMS_STATUS_EMAIL T1
        WHERE T1.NET_ID = num;  
BEGIN

  OPEN C1(net_id);   --- This is the ways to pass parameter to a cursor.

  FETCH C1 into email_address;

  CLOSE C1;

  RETURN email_address;
END;