I first encountered such a construct when manually tried to create DB for IBM Business Process Manager:
….
GO
CALL BPM_SET_LOB_INLINE_LENGTH(‘LSW_BPD_NOTIFICATION’, ‘ERROR_STACK_TRACE’, 4096)
GO
CALL BPM_SET_LOB_INLINE_LENGTH(‘LSW_SNAPSHOT’, ‘CHANGE_DATA’, 16384)
GO
CALL BPM_SET_LOB_INLINE_LENGTH(‘LSW_SNAPSHOT’, ‘DESCRIPTION’, 4096)
….
Of course running as usual db2 -t -f createProcedure_ProcessServer.sql did not work
Firstly, I thought that “GO” is a new reserved word for new utility CLPPLUS included in DB2 to substitute db2 executable, however, reality was simpler: This “GO” has the same role as @, usually on DB2 we separate stored procedures and call with @ and then run db2 -td@ -f … but these script of BPM should be run db2 -tdGO -f createProcedure_ProcessServer.sql , it is rarely used but -td allows up to 2 tokens as command separator
Of course authors of this script risked that “GO” might be a part of some data object name or data, but it does not happen
Why they decided to use GO (as if on MS SQL and some other RDBMS) instead of convenient @? Probably just to puzzle people
Live and learn, live and learn…