ORA-06502错误用于测试现有值

时间:2014-10-31 14:36:37

标签: plsql oracle11g oracle-sqldeveloper

这是程序和错误,我发送的值恰好是表中已存在的值(没有依赖项)。不确定为什么它会抛出错误。

 create or replace PROCEDURE TEST (email_address in VARCHAR2, 
 CatItype in VARCHAR2, opt_status in CHAR,userIns in VARCHAR2,
 editstat out VARCHAR2) 
 AS
 eid EMAILDATA.EMAIL_ID%TYPE;
 eid1 EMAILDATA.EMAIL_ID%TYPE;
 cid EMAILDATA.category_id%TYPE;
 cname EMAILDATA.CATEGORY_NAME%TYPE;
 pref EMAILDATA.PREFERENCE%TYPE;

 Email_val EMAILDATA.EMAIL_ADDRESS%TYPE := email_address;
 CatIntType EMAILDATA.INTER_CONTACTTYPE%TYPE := CatItype;
 usrins EMAILDATA.USER_INSERTING%TYPE := userIns;
 ostat EMAILDATA.PREFERENCE%TYPE := opt_status;
 error_flag BOOLEAN ;

  Error
  ORA-06502: PL/SQL: numeric or value error: character string buffer too small
  ORA-06512: at "TEST", line 19
  ORA-06512: at line 13

1 个答案:

答案 0 :(得分:0)

我想问题就在这里:usrins EMAILDATA.USER_INSERTING%TYPE := userIns;

SQL中的VARCHAR2的最大长度(表类型)= 4000个字符

PL / SQL IS 32767中的最大长度

USER_INSERTING 是表EMAILDATA中的一列。我想它有VARCHAR2类型。在这种情况下,最大。此变量的字符数限制为4000(取决于您的DDL)。

userIns 是一个PL / SQL VARCHAR2变量,最多可包含32767个字符。