I’ve never run into wm_concat before when using Oracle, but I saw it in a statement similar to this earlier today:
WHERE item_type LIKE '%floppy%';
Of course, it didn’t work:
ORA-00904: "WM_CONCAT": invalid identifier
It looks like
WM_CONCAT isn’t a supported command (Error when using wm_concat function), and possibly the code I was debugging stopped working when the database was upgraded to 12c.
WM_CONCAT is intended to return the results as a comma-separated list. A strange idea, but it this particular case it almost made sense. A supported replacement that aggregates results into a single string is LISTAGG.
SELECT LISTAGG(id, ',')
WITHIN GROUP (ORDER BY id)
WHERE item_type LIKE '%floppy%'
GROUP BY 1;
In this case, I did not want the results separated into groups, so I used
GROUP BY 1 to put all results in the same group.
There are a number of other string aggregation techniques for Oracle, if you ever find yourself with such a need.