В Oracle, NLS_CHARSET_DECL_LEN() функцията връща дължината на декларацията (в брой знаци) на NCHAR колона.
Синтаксис
Синтаксисът е така:
NLS_CHARSET_DECL_LEN(byte_count, char_set_id)
Където byte_count е ширината на колоната и char_set_id е идентификационният номер на набора от знаци на колоната.
Пример
Ето един основен пример:
SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL; Резултат:
100
Ето го с различен идентификатор на набор от знаци:
SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL; Резултат:
50
Вземете идентификатора на набора от символи
Можем да използваме NLS_CHARSET_ID() функция за връщане на идентификатора на набора от символи за даден набор от знаци:
Пример:
SELECT NLS_CHARSET_DECL_LEN(
100,
NLS_CHARSET_ID('AL16UTF16')
)
FROM DUAL; Резултат:
50
Нулев аргумент
Ако някой аргумент е null , резултатът е null :
SET NULL 'null';
SELECT
NLS_CHARSET_DECL_LEN(null, 1) AS r1,
NLS_CHARSET_DECL_LEN(100, null) AS r2
FROM DUAL; Резултат:
R1 R2 _______ _______ null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.
Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.
Неправилен брой аргументи
Извикването на функцията без предаване на аргументи води до грешка:
SELECT NLS_CHARSET_DECL_LEN()
FROM DUAL; Резултат:
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:
И предаването на твърде много аргументи също води до грешка:
SELECT NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL; Резултат:
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: