We encountered this problem while trying to inserts records using jdbc ( type 4 driver provided by DB2).
From the IBM web site I found the following info - obviously the pre-defined package NULLID.SYSSH203 does not exist in DB2. DB2 allows upto SYSH202 ( from SYSH200). Now as we are inserting data it is executing SYS200-SYSH202 ( each of which contains 65 sections) and hence inserting upto 195 rows. After that it is trying to find the package SYSH203 ( this is what my understanding is) which is not there.
So, how can we insert more than 195 rows at one go using jdbc . ( One idea may be to open a fresh connection but that does not sound very sophisticated).
I do not think rebinding this package is an option as this package does not exist .
I am not very clear about this whol thing - but what I have understood so far is that for executing the sql using jdbc DB2 uses some predefined packages ( SYSSH200-SYSSH203 each haviing 65 sections ). This , to my understanding enables 65*3 = 195 rows to be entered and then it tries to find the next package (SYSSH203 which is not supplied and hence it fails).
My question is how do you insert a large number of rows using jdbc ?
( I feel that if I reopen another connection DB2 will try to execute the packages from SYSSH200 again) but is there a simpler way of doing this ?
What happens if I commit the transactions after say every 195th row. Will DB2 create the SYSSH200 - 202 pacakges again and execute them ?
How are you inserting the rows? If your statement is
INSERT INTO SOMETABLE VALUES (0,1,2,3,'A','B','C')
then I can see why DB2 is using a separate internal statement for each one. If, however, you used
INSERT INTO SOMETABLE VALUES (?,?,?,?,?,?,?)
prepared the statement once, and then repeatedly executed the (prepared) statement after binding values to each parameter marker then I suspect it would use only one internal statement.