I've worked with DB2 and it requires throwing most transactions out the
window. Worse than that dynamic sql MUST be followed immediately by a
commit or no one else can do one. (their query tool does this for you) DB2
does NOT do dynamic sql; it does static sql. What it does with "dynamic"
sql is create a plan and bind it in then run it - turning dynamic to static
and that puts a lock on the plan table until you commit. So anyone else
running dynamic sql can't until you commit. (plan table is a source of
serialization for the entire system). When I worked with it (DB2 on a
mainframe) we had to make sure all DML had a commit immediately after it.