та же структура — DDS против DDL — файла и идентификаторов уровня

#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 в моей системе. Он даже должен совпадать с уровнем формата в вашей системе. Таким образом, файлы могут использоваться взаимозаменяемо без проверки уровня.

Используя DSPFD, вот на что вам нужно обратить внимание скриншот вывода DSPFD