Oracle
 sql >> Database >  >> RDS >> Oracle

NLS_CHARSET_NAME() Funzione in Oracle

In Oracle Database, il NLS_CHARSET_NAME() La funzione restituisce il nome del set di caratteri di un determinato set di caratteri, in base al suo ID. Si passa l'ID del set di caratteri come argomento e la funzione restituisce il suo nome.

Sintassi

La sintassi è questa:

NLS_CHARSET_NAME(number)

Dove number è l'ID del set di caratteri per cui vuoi restituire il nome.

Esempio

Ecco un esempio di base:

SELECT NLS_CHARSET_NAME(1)
FROM DUAL;

Risultato:

US7ASCII

Eccolo con un ID set di caratteri diverso:

SELECT NLS_CHARSET_NAME(871)
FROM DUAL;

Risultato:

UTF8

Argomento nullo

Se l'argomento è null , il risultato è null :

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

Risultato:

null

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null si verifica come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

ID set di caratteri non valido

Il passaggio di un ID set di caratteri non valido risulta null :

SET NULL 'null';
SELECT NLS_CHARSET_NAME(19999)
FROM DUAL;

Risultato:

null

Tuttavia, il passaggio del tipo di dati errato restituisce un errore:

SELECT NLS_CHARSET_NAME('oops')
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT NLS_CHARSET_NAME('oops')
FROM DUAL
Error report -
ORA-01722: invalid number

Conteggio argomenti errato

La chiamata della funzione senza passare alcun argomento genera un errore:

SELECT NLS_CHARSET_NAME()
FROM DUAL;

Risultato:

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:

Ma il passaggio di più ID di set di caratteri comporta la restituzione del nome del primo:

SELECT NLS_CHARSET_NAME(871, 1)
FROM DUAL;

Risultato:

UTF8