No Oracle Database, o
NLS_COLLATION_NAME()
A função retorna o nome de um determinado agrupamento, com base em seu ID. Você passa o ID da ordenação ao chamar a função e ela retorna o nome da ordenação. Sintaxe
A sintaxe fica assim:
NLS_COLLATION_NAME(expr [, flag ])
Onde
expr
é o ID de agrupamento do tipo NUMBER
. A
flag
argument é um argumento opcional que se aplica apenas a agrupamentos Unicode Collation Algorithm (UCA). Ele determina se a função deve retornar a forma curta ou longa do nome do agrupamento. A
flag
argumento pode ser um dos seguintes:Sinalização | Descrição |
---|---|
'S' ou 's' | Retorna a forma abreviada do nome do agrupamento. |
'L' ou 'l' | Retorna a forma longa do nome do agrupamento. |
O valor padrão para este sinalizador é
'L'
. Exemplo
Segue um exemplo básico:
SELECT NLS_COLLATION_NAME(70)
FROM DUAL;
Resultado:
XAZERBAIJANI
Aqui estão mais alguns exemplos:
SELECT
NLS_COLLATION_NAME(4112) AS "1",
NLS_COLLATION_NAME(4116) AS "2"
FROM DUAL;
Resultado:
1 2 ___________ _____________ FRENCH_M CANADIAN_M
Sinalizador de formulário longo/curto
Conforme mencionado, podemos passar um sinalizador opcional para determinar se retorna a forma curta ou longa do nome do agrupamento.
SELECT
NLS_COLLATION_NAME(208920, 'L') AS "Long",
NLS_COLLATION_NAME(208920, 'S') AS "Short"
FROM DUAL;
Resultado:
Long Short __________________________________________ _______________ UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN UCA0620_THAI
O valor padrão para este sinalizador é
'L'
. Então, se omitirmos o sinalizador, a forma longa será retornada:SELECT
NLS_COLLATION_NAME(208920) AS "Default"
FROM DUAL;
Resultado:
Default __________________________________________ UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN
Este sinalizador aplica-se apenas a agrupamentos Unicode Collation Algorithm (UCA).
Se aplicarmos o sinalizador a um agrupamento não UCA, não veremos diferença:
SELECT
NLS_COLLATION_NAME(4112, 'L') AS "1",
NLS_COLLATION_NAME(4112, 'S') AS "2"
FROM DUAL;
Resultado:
1 2 ___________ ___________ FRENCH_M FRENCH_M
Agrupamento inválido
Passar um nome de agrupamento inválido resulta em
null
:SET NULL 'null';
SELECT NLS_COLLATION_NAME(4113)
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. Argumento nulo
Passando
null
retorna null
:SET NULL 'null';
SELECT NLS_COLLATION_NAME(null)
FROM DUAL;
Resultado:
null
Contagem incorreta de argumentos
Chamar a função sem passar nenhum argumento resulta em um erro:
SELECT NLS_COLLATION_NAME()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_COLLATION_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:
E passar muitos argumentos também resulta em um erro:
SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_COLLATION_NAME(4112, 'S', 'L') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: