Can you replace
'%:TableName%'
with
'%' || :TableName || '%'
?
For those that might be interested: For SQL Server embedding the % into the parameter's text like this works: (The other method described above doesn't)
WHERE trim(upper(table_name)) LIKE trim(upper(@TableName))