ORA-06502:PL / SQL:数值或值错误:使用max函数时字符串缓冲区太小

时间:2017-01-12 14:23:36

标签: oracle plsql

我得到 ORA-06502:PL / SQL:数字或值错误:字符串缓冲区太小。但是当我运行sql查询时,它只返回“T00B”五个字符的长度。将return max值插入last_account_code时会引发异常。 last_account_code和account_code都是相同的类型。

DECLARE 

 last_account_code account_header_1.account_code%TYPE := ''; 
 in_is_delivery_address VARCHAR(1) := 'N';
 starts_with VARCHAR2(1) := 'T';

BEGIN 
 SELECT MAX(account_code)
    INTO last_account_code
   FROM account_header_1
   WHERE account_code like starts_with||'%' AND
         ( account_code like 'FS%' OR in_is_delivery_address <> 'Y' ) AND
         ( account_code not like 'FS%' OR in_is_delivery_address = 'Y' );         

END;
/



-- desc account_header_1;
--
--Name                  Null     Type      
----------------------- -------- --------- 
--ACCOUNT_CODE          NOT NULL CHAR(5)
  
      
  1. 00000 - “PL / SQL:数字或值错误%s”   *原因:算术,数字,字符串,转换或约束错误          发生了。例如,如果尝试,则会发生此错误          将值NULL赋给声明为NOT NULL的变量,或者如果是          尝试将大于99的整数分配给变量          声明NUMBER(2)。   *操作:更改数据,如何操作或如何声明数据          这些值不会违反约束条件。
  2.   

0 个答案:

没有答案