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

Função NLS_CHARSET_DECL_LEN() no Oracle


No Oracle, o NLS_CHARSET_DECL_LEN() função retorna o comprimento da declaração (em número de caracteres) de um NCHAR coluna.

Sintaxe


A sintaxe fica assim:
NLS_CHARSET_DECL_LEN(byte_count, char_set_id)

Onde byte_count é a largura da coluna e char_set_id é o ID do conjunto de caracteres da coluna.

Exemplo


Segue um exemplo básico:
SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL;

Resultado:
100

Aqui está com um ID de conjunto de caracteres diferente:
SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL;

Resultado:
50

Obter o ID do conjunto de caracteres


Podemos usar o NLS_CHARSET_ID() função para retornar o ID do conjunto de caracteres para um determinado conjunto de caracteres:

Exemplo:
SELECT NLS_CHARSET_DECL_LEN(
    100, 
    NLS_CHARSET_ID('AL16UTF16')
    )
FROM DUAL;

Resultado:
50

Argumento nulo


Se algum argumento for null , o resultado é null :
SET NULL 'null';
SELECT 
    NLS_CHARSET_DECL_LEN(null, 1) AS r1,
    NLS_CHARSET_DECL_LEN(100, null) AS r2
FROM DUAL;

Resultado:
     R1      R2 
_______ _______ 
   null    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.

Contagem incorreta de argumentos


Chamar a função sem passar nenhum argumento resulta em um erro:
SELECT NLS_CHARSET_DECL_LEN()
FROM DUAL;

Resultado:
Error starting at line : 1 in command -
SELECT NLS_CHARSET_DECL_LEN()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

E passar muitos argumentos também resulta em um erro:
SELECT NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL;

Resultado:
Error starting at line : 1 in command -
SELECT NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action: