If I have a code template with a concatenation || in it, one of the pipe characters gets removed, which makes the syntax incorrect. The help says if it looks for a single pipe, it’ll place the caret there, but a concatenation isn’t a single pipe. The code should check that it isn’t a double pipe. I could triple pipe in the code, but it seems a silly workaround and makes the code non transportable (as it has a syntax error).
Test example. I have a template for a standard recursive subquery refactoring called RSF in my code templates as below… Notice the bold concat.
with treewalk(ID, PARENT_ID, NAME, PATH, LVL) as (
select ID, PARENT_ID, NAME, cast(NAME as varchar2(4000)), 1 – Anchor
from T_CUSTOMER
where PARENT_ID is null
union all
select a.ID, a.PARENT_ID, a.NAME, t.NAME || ‘’ || a.NAME, t.LVL + 1
from treewalk t
join T_CUSTOMER a on a.PARENT_ID = t.ID
)
search breadth first by NAME set node_order /* or depth first */
select *
from treewalk
It gets replaced with…
[snip…]
select a.ID, a.PARENT_ID, a.NAME, t.NAME | ‘’ || a.NAME, t.LVL + 1
[snip…]
making a syntax error.