PL / SQL:数字或值错误-ORA-06502

时间:2020-10-30 05:24:41

标签: oracle plsql

我一直在收到ORA-06502:PL / SQL:数字或值错误:字符串缓冲区太小。这是我的工作。

CREATE OR REPLACE TYPE t_new_var AS OBJECT (
    var_v_1             varchar2(6 char),   
    var_v_2             varchar2(4 char),   
    var_v_3             varchar2(4 char),   
  CONSTRUCTOR FUNCTION t_new_var(SELF IN OUT NOCOPY t_new_var) RETURN SELF AS RESULT
);
CREATE OR REPLACE TYPE t_old AS OBJECT (
    var_v_1                  number(3),  -- nullable   
    var_v_2                  number(8),   -- nullable      
    var_v_3                  number(2),   -- nullable   
  CONSTRUCTOR FUNCTION t_old(SELF IN OUT NOCOPY t_old) RETURN SELF AS RESULT
);

在过程中:

SELECT 

  TO_CHAR(t_old.var_v_1) AS one,
  TO_CHAR(t_old.var_v_2) AS two,
  TO_CHAR(t_old.var_v_3) AS three
  INTO
    t_new_v.var_v_1,                 
    t_new_v.var_v_2,             
    t_new_v.var_v_3                   
  FROM DUAL;

这是什么问题?我尝试过,CAST DECODE以及NVL同样的错误

1 个答案:

答案 0 :(得分:1)

您尝试为varchar变量分配一个值,但该值大于该变量可以处理的值。

您要选择

TO_CHAR(t_old.var_v_2) AS two - number(8)

进入

var_v_2 - varchar2(4 char), 

您不能在变量8个字符的大小中选择4个字符。

相关问题