Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função NLS_CHARSET_NAME() no Oracle


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