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

Função NLS_COLLATION_NAME() no Oracle


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: