sql pl - DB2 SQLCODE -433, SQLSTATE 22001 -


i have created trigger, inside trigger appending lot of varchar , creating new varchar. if append many varchars getting below sql exception. (if append 4 or 5 varchar not getting error)

i have found out varchar maximum size based on page size of table space. have checked page size, 8k bytes.

but content appending not 8k bytes. please me resolve error.

an error occurred in triggered sql statement in trigger "orddba.ord_ir_in". information returned error includes sqlcode "-433", sqlstate "22001" , message tokens "action|area_unit|bal_chg_flag|cancel_date|".. sqlcode=-723, sqlstate=09000, driver=3.66.46

declare columnnames varchar(5000); set columnnames=''; set columnnames = 'value1' ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value2') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value3') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value14') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value5') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value6') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value6') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value8') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value9') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value10') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value11') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value12') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value13') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value14') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value15') ; set columnnames = concat(columnnames, '|') ; set columnnames = concat(columnnames, 'value16') ; 

from comment:

if count number of character in varchar less 5000, seems db2 counting in different way failing. changed datatype clob, working fine

this because length of varchar given in bytes, while length of clob given in characters (documentation).

based on character encoding, single character may longer 1 byte. therefore not possible store 5000 characters in varchar(5000).


Comments