PL/SQL: 数字或值错误 - ORA-06502
Posted
技术标签:
【中文标题】PL/SQL: 数字或值错误 - ORA-06502【英文标题】:PL/SQL: numeric or value error - ORA-06502 【发布时间】:2020-10-30 05:24:41 【问题描述】:我不断收到 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】:您尝试为 varchar 变量赋值,但该值大于该变量的处理能力。
你要选择
TO_CHAR(t_old.var_v_2) AS two - number(8)
进入
var_v_2 - varchar2(4 char),
您不能将8
字符选择到变量中,大小为4
字符。
【讨论】:
以上是关于PL/SQL: 数字或值错误 - ORA-06502的主要内容,如果未能解决你的问题,请参考以下文章
执行立即错误:PL/SQL:数字或值错误:字符到数字转换错误
获取 ORA-06502:PL/SQL:数字或值错误:SQL 触发器中的字符到数字转换错误
ORA-06502: PL/SQL: 数字或值错误: 字符到数字的转换错误