Formateando una cadena UUID sin REGEXP_REPLACE y PL / SQL
Me gustaría formatear el resultado de la función sys_guid () como se propone enesta respuesta
select regexp_replace(rawtohex(sys_guid())
, '([A-F0-9]{8})([A-F0-9]{4})([A-F0-9]{4})([A-F0-9]{4})([A-F0-9]{12})'
, '\1-\2-\3-\4-\5')
as FORMATTED_GUID
from dual
Por razones de rendimiento, me gustaría evitar el uso de regexp_replace (ya que proceso una gran cantidad de registros).
Mi escenario se puede simplificar para este caso de uso:
select rawtohex(sys_guid()) GUID
from dual connect by level <= 2;
Obviamente no puedo usar substr y concatenación ya que cada SUBSTR procesará un SYS_GUID diferente. También me gustaría permanecer en SQL, sin un cambio de contexto a la función PL / SQL.
Alguna idea de cómo formatear una cadena en SQL similar a la fecha o el número usando una máscara:
to_char(rawtohex(sys_guid(),'CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC') /* note, this is clear illegal */