Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разный DEFAULT NULL в словаре / 3 сообщений из 3, страница 1 из 1
30.07.2018, 16:38
    #39681185
d.nemolchev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разный DEFAULT NULL в словаре
Нарвался сегодня на неприятность.
Будьте осторожнее с обработкой значения поля %_TAB_COL[UMN]S.DATA_DEFAULT (LONG), если поле DEFAULT NULL:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
Connected to Oracle Database 12c Enterprise Edition Release 12.1.///
Connected as ///

SQL> 
SQL> Create Table Def_Null_Test (n Number);

Table created


SQL> Create Table Def_Null_Log (Seq Number, Def_Val Clob);

Table created


SQL> Insert Into Def_Null_Log
  2    (Seq, Def_Val)
  3    Select 0, To_Lob(Data_Default)
  4      From User_Tab_Columns
  5     Where Table_Name = 'DEF_NULL_TEST';

1 row inserted


SQL> Alter Table Def_Null_Test Modify n Default Null;

Table altered


SQL> Insert Into Def_Null_Log
  2    (Seq, Def_Val)
  3    Select 1, To_Lob(Data_Default)
  4      From User_Tab_Columns
  5     Where Table_Name = 'DEF_NULL_TEST';

1 row inserted


SQL> Alter Table Def_Null_Test Modify (n Default Null);

Table altered


SQL> Insert Into Def_Null_Log
  2    (Seq, Def_Val)
  3    Select 2, To_Lob(Data_Default)
  4      From User_Tab_Columns
  5     Where Table_Name = 'DEF_NULL_TEST';

1 row inserted


SQL> Select Seq, Dump(Dbms_Lob.Substr(Def_Val, 4000)) Def_Val_Len
  2    From Def_Null_Log
  3   Order By Seq;

       SEQ DEF_VAL_LEN
---------- --------------------------------------------------------------------------------
         0 NULL
         1 Typ=1 Len=5: 78,117,108,108,10
         2 Typ=1 Len=4: 78,117,108,108

SQL> Drop Table Def_Null_Test;

Table dropped


SQL> Drop Table Def_Null_Log;

Table dropped


SQL> 


В первой форме команды ALTER TABLE в DATA_DEFAULT добавляется 1 или 2 символа перевода строки/возврата каретки в зависимости от платформы.
Во второй форме команды эти символы не добавляются.
Испробовано на 12.1.0.1.0 Win x64 & 12.1.0.2.0 HP-UX .
...
Рейтинг: 0 / 0
30.07.2018, 16:54
    #39681193
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разный DEFAULT NULL в словаре
d.nemolchevВ первой форме команды ALTER TABLE в DATA_DEFAULT добавляется 1 или 2 символа перевода строки/возврата каретки в зависимости от платформы.Проверь в SQL*Plus-е.
...
Рейтинг: 0 / 0
31.07.2018, 06:09
    #39681367
d.nemolchev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разный DEFAULT NULL в словаре
Elic,

Да.
В плюсе норм.
PL/SQL Dev лажает рожает чудеса...
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разный DEFAULT NULL в словаре / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]