这是程序和错误,我发送的值恰好是表中已存在的值(没有依赖项)。不确定为什么它会抛出错误。
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
答案 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个字符。