Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction NLS_COLLATION_NAME() dans Oracle

Dans Oracle Database, le NLS_COLLATION_NAME() La fonction renvoie le nom d'un classement donné, en fonction de son ID. Vous transmettez l'ID de collation lors de l'appel de la fonction, et elle renvoie le nom de la collation.

Syntaxe

La syntaxe ressemble à ceci :

NLS_COLLATION_NAME(expr [, flag ])

expr est l'ID de classement de type NUMBER .

Le flag argument est un argument facultatif qui s'applique uniquement aux classements Unicode Collation Algorithm (UCA). Il détermine si la fonction doit renvoyer la forme courte ou la forme longue du nom de classement.

Le flag l'argument peut être l'un des suivants :

Signal Description
'S' ou 's' Renvoie la forme abrégée du nom de la collation.
'L' ou 'l' Renvoie la forme longue du nom de la collation.

La valeur par défaut de cet indicateur est 'L' .

Exemple

Voici un exemple de base :

SELECT NLS_COLLATION_NAME(70)
FROM DUAL;

Résultat :

XAZERBAIJANI

Voici d'autres exemples :

SELECT 
    NLS_COLLATION_NAME(4112) AS "1",
    NLS_COLLATION_NAME(4116) AS "2"
FROM DUAL;

Résultat :

          1             2 
___________ _____________ 
FRENCH_M    CANADIAN_M   

Drapeau forme longue/courte

Comme mentionné, nous pouvons passer un indicateur facultatif pour déterminer s'il faut retourner la forme courte ou la forme longue du nom de classement.

SELECT 
    NLS_COLLATION_NAME(208920, 'L') AS "Long",
    NLS_COLLATION_NAME(208920, 'S') AS "Short"
FROM DUAL;

Résultat :

                                      Long           Short 
__________________________________________ _______________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN    UCA0620_THAI   

La valeur par défaut de cet indicateur est 'L' . Ainsi, si nous omettons le drapeau, la forme longue est renvoyée :

SELECT 
    NLS_COLLATION_NAME(208920) AS "Default"
FROM DUAL;

Résultat :

                                   Default 
__________________________________________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN   

Cependant, cet indicateur ne s'applique qu'aux classements Unicode Collation Algorithm (UCA).

Si nous appliquons l'indicateur à un classement non-UCA, nous ne voyons aucune différence :

SELECT 
    NLS_COLLATION_NAME(4112, 'L') AS "1",
    NLS_COLLATION_NAME(4112, 'S') AS "2"
FROM DUAL;

Résultat :

          1           2 
___________ ___________ 
FRENCH_M    FRENCH_M   

Collation invalide

La transmission d'un nom de classement non valide entraîne null :

SET NULL 'null';
SELECT NLS_COLLATION_NAME(4113)
FROM DUAL;

Résultat :

null

Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null se produit à la suite d'un SQL SELECT déclaration.

Cependant, vous pouvez utiliser SET NULL pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null doit être retourné.

Argument nul

Passer null renvoie null :

SET NULL 'null';
SELECT NLS_COLLATION_NAME(null)
FROM DUAL;

Résultat :

null

Nombre d'arguments incorrects

L'appel de la fonction sans passer d'arguments entraîne une erreur :

SELECT NLS_COLLATION_NAME()
FROM DUAL;

Résultat :

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:

Et passer trop d'arguments entraîne également une erreur :

SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL;

Résultat :

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: