Ошибка при создании таблицы в db2 с типом данных

Я новичок в DB2. Я попытался создать таблицу с помощью следующего запроса:

CREATE TABLE CLP.legal_bill_charge(
client_id VARCHAR(11),
client_division_id VARCHAR(11),
client_office_id VARCHAR(11),
matter_id VARCHAR(11),
legal_bill_charge_id VARCHAR(13) NOT NULL,
legal_bill_id VARCHAR(11),
lawfirm_charge_number decimal(10,4),
timekeeper_id VARCHAR(11),
timekeeper_name varchar(256),
timekeeper_billed_level varchar(20),
charge_type char(10),
charge_text varchar(300),
long_charge_text varchar(8000),
charge_date TIMESTAMP   ,
original_units decimal(8,2),
original_unit_price decimal(23,6),
original_amount decimal(23,6),
current_units decimal(19,13),
current_unit_price decimal(23,6),
current_adjustment_amount decimal(23,6),
lf_adjustment_amount decimal(23,6),
lbc_tax_type varchar(6),
lbc_tax_rate decimal(16,15),
tax_amount decimal(65,36),
recommended_expense_amount decimal(23,6),
recommended_fee_amount decimal(23,6),
activity_code varchar(255),
activity_desc varchar(255),
task_code varchar(255),
task_desc varchar(255),
phase_code_id varchar(255),
phase_code_desc varchar(255))
in FAC032TS
organize by row;

Однако я получил следующую ошибку: DB21034E Команда была обработана как оператор SQL, поскольку она не была допустимой командой процессора командной строки. Во время обработки SQL он возвращал: SQL0604N десятичное значение атрибута длины, точности или масштаба для столбца, отдельного типа, структурированного типа, типа массива, атрибута структурированного типа, процедуры, целевого типа приведения, отображения типа или глобальной переменной "(65,36)" не является действительным.
SQLSTATE = 42611

SQL0604N Десятичное значение длины, точности или масштаба для столбца, отдельного типа, структурированного типа, типа массива, атрибута структурированного типа, подпрограммы, целевого типа приведения, отображения типа или глобальной переменной "(65,36)

Может ли кто-нибудь указать, какую ошибку я совершаю? Заранее спасибо.

1 ответ

Вы получили эту ошибку, потому что Db2 в Linux/Unix/Windows предлагает тип данных DECIMAL с максимальной точностью 31. Если вы используете DECFLOAT, вы получите точность 34, но ваши приложения должны быть совместимы с этим типом данных.

Обратитесь к странице документации для получения информации о поддерживаемых типах данных и их характеристиках.

Вы можете аппроксимировать большие числа с помощью FLOAT или DOUBLE, но только если приложения и SQL должным образом кодируются для компенсации.

Тщательно проверьте требование.

Другие вопросы по тегам