No Oracle Database, o
NLS_CHARSET_NAME()
A função retorna o nome do conjunto de caracteres de um determinado conjunto de caracteres, com base em seu ID. Você passa o ID do conjunto de caracteres como um argumento e a função retorna seu nome. Sintaxe
A sintaxe fica assim:
NLS_CHARSET_NAME(number)
Onde
number
é o ID do conjunto de caracteres para o qual você deseja retornar o nome. Exemplo
Segue um exemplo básico:
SELECT NLS_CHARSET_NAME(1)
FROM DUAL;
Resultado:
US7ASCII
Aqui está com um ID de conjunto de caracteres diferente:
SELECT NLS_CHARSET_NAME(871)
FROM DUAL;
Resultado:
UTF8
Argumento nulo
Se o argumento for
null
, o resultado é null
:SET NULL 'null';
SELECT NLS_CHARSET_NAME(null)
FROM DUAL;
Resultado:
null
Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que
null
ocorre como resultado de um SQL SELECT
demonstração. No entanto, você pode usar
SET NULL
para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null
deve ser devolvido. ID do conjunto de caracteres inválido
Passar um ID de conjunto de caracteres inválido resulta em
null
:SET NULL 'null';
SELECT NLS_CHARSET_NAME(19999)
FROM DUAL;
Resultado:
null
No entanto, passar o tipo de dados errado retorna um erro:
SELECT NLS_CHARSET_NAME('oops')
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_CHARSET_NAME('oops') FROM DUAL Error report - ORA-01722: invalid number
Contagem incorreta de argumentos
Chamar a função sem passar nenhum argumento resulta em um erro:
SELECT NLS_CHARSET_NAME()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_CHARSET_NAME() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Mas passar vários IDs de conjunto de caracteres resulta no nome do primeiro sendo retornado:
SELECT NLS_CHARSET_NAME(871, 1)
FROM DUAL;
Resultado:
UTF8