Eu encontrei uma maneira não muito intuitiva de fazer isso usando
DUMP()
SELECT DUMP(A.NAME),
DUMP(A.surname),
DUMP(B.ordernum)
FROM customer A
JOIN orders B
ON A.id = B.id
Ele retornará algo como:
'Typ=1 Len=2: 0,48'
para cada coluna. Type=1
significa VARCHAR2/NVARCHAR2
Type=2
significa NUMBER/FLOAT
Type=12
significa DATE
, etc Você pode consultar este documento oracle para obter informações sobre o Código de Tipo de Dados
ou este para um mapeamento simples Mapeamentos de Código de Tipo Oracle