Я пытаюсь проверить, в каком наборе символов DBMS_METADATA.GET_DDL()
возвращает результат. Пробовал так проверять.
SELECT DUMP(
CAST(
DBMS_METADATA.GET_DDL('FUNCTION', 'MyFUNCTION', 'SCHEME')
AS VARCHAR2(4000)
),
16
)
FROM dual
Однако он не показывает мне набор символов. Я получаю только такой результат:
Typ=1 Len=1739: a,2...
Мой NLS_CHARACTERSET
возвращается WE8MSWIN1252
. Возвращает ли GET_DDL()
также этот набор символов?
Измените второй аргумент дампа с 16 на 1016:
SELECT dump (CAST(DBMS_METADATA.GET_DDL('FUNCTION', 'MyFUNCTION', 'SCHEME') AS VARCHAR2(4000)), 16) FROM DUAL
Typ=1 Len=126 CharacterSet=AL32UTF8: a ...
Это объясняется в документации:
By default, the return value contains no character set information. To retrieve the character set name of expr, add 1000 to any of the preceding format values.
Вы также спросили:
My
NLS_CHARACTERSET
returnsWE8MSWIN1252
. Does GET_DDL returns also in this characterset?
Вы приводите результат вызова GET_DDL к varchar2, поэтому дамп сообщит вам набор символов этого приведенного значения, которое будет в вашем NLS_CHARACTERSET. Значение, фактически возвращаемое GET_DDL, представляет собой CLOB, который также будет в вашем NLS_CHARACTERSET.