#sql #ibm-midrange #ddl
#sql #ibm-средний уровень #ddl
Вопрос:
В IBM i (as / 400) я хочу, чтобы та же программа запускалась для файлов (таблиц), созданных DDL и DDS. Используя API «CALL qsys2.generate_sql», я смог преобразовать DDS в DLL. Однако после компиляции я получаю другой идентификатор файла и уровня участника.
Вот очень простой пример DDS и DLL-кода…
A R TST_RC
A ORDER_NUM 8S 0 TEXT('ORFER_NO')
A ORDER_CUST 20A TEXT('CUST NO')
..
CREATE TABLE MYLIB.MYTABLE (
ORDER_NUM NUMERIC(8, 0) NOT NULL DEFAULT 0 ,
ORDER_CUST CHAR(20) CCSID 37 NOT NULL DEFAULT '' )
RCDFMT TST_RC ;
;
Комментарии:
1. Здравствуйте, можете ли вы предоставить больше информации о том, что вы пытаетесь сделать?
2. использование устаревшей таблицы AS / 400 DDS и преобразование в эквивалент SQL таким образом, чтобы идентификатор уровня файла не менялся… смотрите developer.ibm.com/articles/i-sql-indexs-and-native-io
Ответ №1:
Идентификатор файла и уровня участника всегда будут разными. Это не проблема, но если форматы одинаковы, то идентификатор уровня формата будет таким же. Это идентификатор уровня формата, который вызывает проверку уровня. Итак, в вашем примере идентификаторы уровня файла и участника различны, но два файла будут иметь одинаковый идентификатор уровня формата, то есть 332FE538F73DB в моей системе. Он даже должен совпадать с уровнем формата в вашей системе. Таким образом, файлы могут использоваться взаимозаменяемо без проверки уровня.