Acho que você não pode usar
NLS_NUMERIC_CHARACTERS para suprimir o separador de grupo. É para isso que servem os modelos de formato. Se você não quiser separadores de grupos, não os peça em seu modelo de formato. Todos os NLS_NUMERIC_CHARACTERS fará é especificar qual deve ser o separador de grupo, quando for solicitado. Mesmo se você usar
CHR(0) , como em:select TO_CHAR(15000000.05,'999G999G990D00', 'NLS_NUMERIC_CHARACTERS = ,' || chr(0))
from dual
A resposta ainda recebe chr(0)s embutido nela (o que você pode ver se envolver a expressão em um
DUMP() função., assim:select DUMP(TO_CHAR(15000000.05,'999G999G990D00', 'NLS_NUMERIC_CHARACTERS = ,' || chr(0)))
from dual