Как сказал @data_henrik, ваш вопрос не ясен ...
Но если я вас правильно понял, вы хотите создать xml do c для всех столбцов из вашей базовой таблицы без необходимо кодировать все 150 столбцов в запросе.
Я не знаю прямого способа сделать это, но вы можете сделать это в два этапа.
1-м шагом будет инструкция SELECT, которая построит ваш окончательный SELECT на основе столбцов из вашей базовой таблицы.
Давайте в качестве примера возьмем таблицу DEPARTMENT из образца db:
db2 => select * from department
DEPTNO DEPTNAME MGRNO ADMRDEPT LOCATION
------ ------------------------------------ ------ -------- ----------------
A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00 -
B01 PLANNING 000020 A00 -
C01 INFORMATION CENTER 000030 A00 -
...
в нем 5 столбцов. Следующий выбор создаст ваш окончательный SELECT ...
select
'SELECT XMLROW( ' ||
listagg(rtrim(colname) || ' AS "' || lcase(rtrim(colname)) || '"' , ', ')
|| ' ) FROM DEPARTMENT'
from syscat.columns
where tabname = 'DEPARTMENT'
------------------------------------------------------------------------------------------------------------
SELECT XMLROW( ADMRDEPT AS "admrdept", DEPTNAME AS "deptname", DEPTNO AS "deptno", LOCATION AS "location", MGRNO AS "mgrno" ) FROM DEPARTMENT
Если вы выполните полученный SELECT. он выдаст xml, подобное тому, что вы хотите.
----------------------------------------------------------------------------------------------------------
<row><admrdept>A00</admrdept><deptname>SPIFFY COMPUTER SERVICE DIV.</deptname><deptno>A00</deptno><mgrno>000010</mgrno></row>
<row><admrdept>A00</admrdept><deptname>PLANNING</deptname><deptno>B01</deptno><mgrno>000020</mgrno></row>
<row><admrdept>A00</admrdept><deptname>INFORMATION CENTER</deptname><deptno>C01</deptno><mgrno>000030</mgrno></row>
Примечание: Я использовал XMLROW , для простоты ... вместо вашего XMLSERIALIZE( XMLELEMEENT( XMLFOREST ...
просто в качестве примера ... так что вы поняли идею. .