ROFL - this is funny. But this is a Beginners Forum, so I'll go little slow...
-811 - is pretty straight forward, from the manuals - execution of an embedded SELECT statement or a subselect in the SET clause of an UPDATE statement has resulted in a result table that contains more than one row. Alternatively, a subquery contained in a basic predicate has produced more than one value.
So, in your program either handle SQLCODE -811, use CUROSR. Or may be if you can, use FETCH FIRST 1 ROW ONLY - but than what release of DB2 you are at? Hopefully not less than V7.