data precision

test_2008
Дата: 19.11.2009 12:43:54
Как alter table сделать изменение параметров поля NUMBER на цифры указанные в
data_length , data_precision, data_scale таблицы all_tab_columns.

Простой

alter table t modify (t number(2,25))

меняет data_length и data_scale
как добраться до data_precision ?
orawish
Дата: 19.11.2009 12:55:23
test_2008,

имхо, вы ошибаетесь. у number - length завсегда такая, которая предопределена
способом хранения (их в оракле) -- 22.
а то, что вы задаете это precision и scale
suPPLer
Дата: 19.11.2009 13:01:28
test_2008,

number(<data_precision>, <data_scale>). Соответственно, чтобы поменять data_precision в all_tab_columns, задайте <data_precision> отличный от того, что уже есть.
test_2008
Дата: 19.11.2009 13:02:02
create table forthetest
(
       t number(22,25)       
)

select * from all_tab_columns where table_name=upper('forthetest')

DATA_LENGTH DATA_PRECISION DATA_SCALE
22 22 25
test_2008
Дата: 19.11.2009 13:03:12
а DATA_PRECISION и DATA_SCALE это что с т.з. математики ?
Elic
Дата: 19.11.2009 13:12:49
test_2008
а DATA_PRECISION и DATA_SCALE это что с т.з. математики ?
(Количество значащих цифр)*10-(Масштаб)
orawish
Дата: 19.11.2009 13:12:53
test_2008
а DATA_PRECISION и DATA_SCALE это что с т.з. математики ?

с т.з. (не математики, а) доки - шкала это число значащих разрядов после десятичного разделителя. а точность - макс. число значащих разрядов вообще (включая знак минус), в десятичном представлении числа.
Elic
Дата: 19.11.2009 13:14:37
orawish
точность - макс. число значащих разрядов вообще (включая знак минус)
Гонишь :)
orawish
Дата: 19.11.2009 13:19:58
Elic
orawish
точность - макс. число значащих разрядов вообще (включая знак минус)
Гонишь :)

ага. гоню. (п рямым углом, видать, попутал )
SQL> create table t (a  number(5,2));

Таблица создана.

SQL> insert into t values(999.99);

1 строка создана.

SQL> insert into t values(-999.99);

1 строка создана.

SQL> insert into t values(9999.99);
insert into t values(9999.99)
                     *
ошибка в строке 1:
ORA-01438: значение больше, чем позволяет заданная для этого столбца точность


SQL> insert into t values(-9999.99);
insert into t values(-9999.99)
                     *
ошибка в строке 1:
ORA-01438: значение больше, чем позволяет заданная для этого столбца точность
test_2008
Дата: 19.11.2009 13:29:05
хм думал помидорами закидают за такой вопрос

а Elic адекватно ответил

Спасибо

COMMIT;