Главная страница

Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4. Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР. Разработкаприложений sap r3Рюдигер Кречмерна языкеВольфганг Вейс


Скачать 28.36 Mb.
НазваниеРазработкаприложений sap r3Рюдигер Кречмерна языкеВольфганг Вейс
АнкорР. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4.pdf
Дата21.12.2017
Размер28.36 Mb.
Формат файлаpdf
Имя файлаР. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР.pdf
ТипКнига
#12433
страница12 из 24
1   ...   8   9   10   11   12   13   14   15   ...   24
Глава 13
Изменение таблиц базы
данных
• Вставка, изменение и удаление элементов
в таблицах базы данных
• Работа с одним или несколькими элементами
• Статическое и динамическое задание имени
таблицы

154 Глава 13
В предыдущих главах было показано, как считывать данные из таблиц базы и записывать их во внутренние таблицы, а также манипулировать содержимым внутренних таблиц. Эти операции можно расценивать как начальные шаги разработки типовой прикладной программы. Во многих случаях тре- буется также сохранять новые или измененные данные в базе данных, если они могут понадобиться в дальнейшем. Так, в диалоговой программе заказа билетов на авиарейсы сначала нужно прочитать дан- ные о существующих рейсах и о наличии свободных мест. После этого надо выбрать пункт назначения,
ввести фамилию клиента и другую необходимую информацию (например, число мест). И, наконец,
нужно сохранить результаты заказа в базе данных, чтобы забронированные места не оказались заняты другими клиентами.
В этой главе будут описаны основные команды для изменения таблиц базы данных: insert, update,
modify и delete. Все они являются частью Open SQL, который интегрирован в состав языка АВАР/4.
Другая базовая команда Open SQL - select — используется для считывания элементов данных из таблиц базы (см. главу 11). Перечисленные выше четыре команды позволяют изменять как отдельные элементы таблицы, так и набор строк, записанных во внутренней таблице. Например, если диалоговая программа модифицирует данные об одном клиенте, можно применить вариант команды Open SQL, предназначен- ный для работы с отдельным элементом. В то же время если необходимо обработать блок данных о клиентах за одну операцию, то, пожалуй, стоит воспользоваться внутренними таблицами. После обра- ботки можно организовать цикл по внутренней таблице и последовательно вносить изменения в каждый элемент таблицы базы. Другой путь — использование команд Open SQL, изменяющих все элементы таблицы базы данных за один шаг. Этот способ (коллективное изменение таблиц) является более бы- стрым, и реализующие его программы проще понять.
Для всех команд Open SQL, изменяющих таблицы базы данных, имя таблицы базы данных может быть задано динамически во время выполнения программы. Динамический вариант команд Open SQL
имеет определенные преимущества при разработке системных программ, работающих с произвольным числом таблиц базы данных.
Включение новых строк с помощью
команды insert
Предположим, необходимо добавить данные о новых клиентах в базу данных туристического агент- ства. Ниже описано, как это сделать с помощью команды insert. Если добавляются данные только одного клиента, рекомендуется использовать вариант команды для вставки отдельной строки. Для включения нескольких строк можно воспользоваться вариантом команды insert, при котором новые данные берутся из внутренней таблицы.
Вставка отдельной строки
Ключевое слово insert позволяет включить новую строку в таблицу базы данных. Проще всего ис- пользовать для этого краткий вариант команды, в котором новые данные извлекаются из рабочей об- ласти, заданной по умолчанию, с помощью ключевого слова tables:
tables
customers-id
customers-name =
.
insert
if
<> 0.
write 'entry already e x i s t s ' .
Поле customers-id было определено в Dictionary как поле первичного ключа. Это означает, что новый элемент может быть добавлен, если только таблица не содержит элемента с таким же значением первичного ключа. В противном случае оператор не выполняется и системному коду возврата sy-subrc присваивается ненулевое значение.
Кроме ввода новых данных из рабочей области, заданной по умолчанию, для этой цели можно ис- пользовать дополнительную запись, указав в команде insert дополнение values. Это очень полезный прием, применяемый при необходимости сохранить в рабочей области временную копию другого эле- мента таблицы. Ниже этот метод иллюстрируется на примере фрагмента программы, которая записы- вает данные нового клиента по фамилии Green в базу данных клиентов.
tables customers.

Изменение таблиц базы данных 155
В этом примере customers является рабочей областью по умолчанию, a my_customer — дополнитель- ная запись, которая содержит новые данные и используется в качестве источника информации для команды insert.
Оба этих метода одинаково хороши при включении отдельных строк, но требуют длительной рабо- ты программы, если необходимо добавить группу новых строк. Такая ситуация будет рассмотрена ниже.
Вставка нескольких строк
Представим, что нужно включить в таблицу базы новую группу клиентов. Было бы неразумно тра- тить время на построчную запись в базу информации о клиентах, как это делалось в приведенных выше примерах. Используя внутреннюю таблицу той же структуры, что и таблица базы данных, к которой необходимо добавить новые элементы, можно включить разом целый набор элементов. Это делается с помощью дополнения from table:
Как работает эта программа? Сначала строится внутренняя таблица all_customers, которая имеет ту же структуру, что и таблица customers, затем в нее заносятся новые данные, и, наконец, содержимое внутренней таблицы одной операцией записывается в базу данных. В реальных прикладных программах внутренняя таблица обычно заполняется с помощью оператора select и изменяется в цикле, который записан после select. Далее внутренняя таблица одной операцией переписывается в базу данных. Груп- повая вставка данных проходит успешно, если все элементы внутренней таблицы могут быть записаны в базу. Если хотя бы один элемент отброшен системой по причине дублирования первичного ключа,
вся операция отменяется и программа завершается сообщением об ошибке выполнения.
Этой ошибки можно избежать, если использовать дополнение accepting duplicate keys. В данном слу- чае элемент, значение ключа которого уже присутствует в таблице базы, не будет записан, а остальные элементы окажутся вставленными. Ошибочная ситуация легко идентифицируется, так как системный код возврата не равен нулю, если отброшена хотя бы одна строка. На практике для проверки присут- ствия в базе дубликата вновь включаемого элемента обычно применяют команду select. Однако, если наличие дублированных ключей крайне маловероятно, лучше воспользоваться конструкцией accepting duplicate keys, которая работает существенно быстрее, чем комбинация операторов select и insert. На- против, если вероятность дублирования первичного ключа довольно высока, вначале нужно найти дуб- лированные ключи с помощью select и лишь затем вставить уникальные элементы.
Разрешается также добавлять новые элементы с помощью команды modify, которая будет
рассмотрена в разделе "Модификация элемента с помощью команды modify". Обычно она
используется, если необходимо добавить или изменить элемент независимо от наличия дублирован-
ного ключа.
Для таблицы базы данных, в отличие от внутренних таблиц, невозможно задать номер строки или индекс, куда следует вставить новый элемент. Причина в том, что СУБД реляционной базы данных сама "решает", в какое место вставить строку. С точки зрения программы вопросы типа "Существует ли данный элемент?" или "Каково значение этого элемента?" вполне корректны, а вопросы типа "В каком порядке отсортирована база данных?" или "Где физически располагается элемент?" не имеют смысла.
Это является прямым следствием философии реляционных баз данных, согласно которой пользователь может знать только содержимое элемента базы, но не место расположения этого элемента.

156 Глава 13
Изменение таблиц базы данных с помощью
команды update
Содержимое всех записей таблицы базы можно изменять с помощью команды update, работа с ко- торой напоминает включение новой строки. Команда update также имеет варианты использования: для отдельного элемента и группы элементов.
Изменение отдельного элемента
Возвращаясь к примеру туристического агентства, предположим, что один из клиентов сменил место проживания и в базе данных необходимо изменить название города. Для этого можно написать следую- щую программу:
Как и для команды insert, описанной в начале главы, краткая версия команды update использует рабочую область customers, заданную в объявлении tables и содержащую измененную информацию. Элемент, задавае- мый с помощью ключевых полей, заменяется в базе только в том случае, если в ней содержится элемент с тем же значением ключа. Например, если в базе данных отсутствует элемент с ключом 12345678, то система не добавит информацию в таблицу и системный код возврата sy-subrc будет не равен нулю.
Изменение нескольких элементов
ДЛЯ оператора update, как и для команды insert, можно использовать дополнение from table, позво- ляющее изменить группу элементов за одну операцию. Например, если имеется внутренняя таблица с модифицированной информацией о клиентах, все изменения могут быть внесены в базу с помощью следующей программы:
В этом примере во внутреннюю таблицу changed_customers включены все клиенты, для которых город пока не был задан (например, новые клиенты Brown, Green и White из предыдущих разделов).
Облегчить идентификацию клиентов, для которых не был определен город, можно, вставив для каж- дого из них текст City unknown. Операция коллективного изменения будет успешной, если все элементы внутренней таблицы содержатся в базе данных. В противном случае система возвращает не равный нулю код sy-subrc.
В предыдущем примере все элементы таблицы базы customers, не имеющие названия города, поме- щаются во внутреннюю таблицу. После изменения названий городов во внутренней таблице обновлен- ные элементы вновь записываются в базу. В АВАР/4 существует более эффективный вариант операции изменения таблиц базы данных. Он проиллюстрирован в следующей программе, которая выполняет такие же изменения в базе данных, что и программа предыдущего примера:
В этом примере после команды update новое значение поля city становится равным City unknown.
Так же как для оператора select, в команде update для задания набора изменяемых элементов можно использовать предложение where.

Изменение таблиц базы данных 157
Работа оператора select показана в главе 11.
Очевидно, что программный текст, содержащий ключевые слова set и where после оператора update,
гораздо легче понять, чем текст предыдущего примера, где применялись внутренние таблицы. Кроме того, такая конструкция выполняется существенно быстрее, чем комбинация операторов select, loop и update. Однако после дополнения set разработчик может использовать только арифметические опера- ции — он не должен применять сложные процедуры, вызывать подпрограммы или передавать диалого- вое окно. Таким образом, внутренние таблицы являются более мощным средством и тому же позволяют получить "моментальный снимок" таблицы базы данных.
Приведем другой пример использования базы данных туристического агентства: авиарейс неожидан- но отменяется и необходимо перерегистрировать пассажиров на новый рейс. Для этого во всех полях нужно заменить старую дату полета на новую:
В данном случае во всех записях регистрации рейса 1234 компании ABC изменяется его дата —
30/12/1999 на 31/12/1999.
Модификация элемента
с помощью команды modify
Часто бывает неизвестно, существует элемент в базе данных или нет. Информацию об этом можно получить с помощью команды select и только затем (в зависимости от кода возврата) применить ко- манды insert и update. Команда modify является удобной комбинацией операторов insert и update, вы- полняемых за одну операцию. Допустим, необходимо изменить название города для записи клиента с идентификационным номером 12345678, но нет уверенности, что такая запись содержится в базе. Для подобной операции можно написать следующую программу:
При выполнении программы АВАР/4 проверяет наличие заданных ключевых полей в таблице базы данных (например, клиента с идентификационным номером 12345678). В зависимости от результата проверки поле может добавляться или изменяться. При выполнении операции значение системного кода возврата не устанавливается.
Так же как для insert и update, с помощью дополнения from table одной операцией можно модифи- цировать набор элементов таблицы:
В этом примере данные всех клиентов, не имеющих информации в поле названия города, считываются во внутреннюю таблицу all_customers. Затем добавляются данные нового клиента, и значение поля названия города заменяется на City unknown. После этого вся внутренняя таблица записывается в базу данных.
Вопросы предпочтения команды modify или комбинации команд insert/update относятся прежде всего к стилю программирования. Если наличие дублированных ключей маловероятно, то лучше ис- пользовать команду insert. В этом случае коллективная замена является оптимальным решением по вре-

158 Глава 13
мени выполнения программы. С другой стороны, применение команды modify упрощает программу, так как выбор операции (insert или update) возлагается на систему.
Удаление элементов таблицы базы данных
с помощью команды delete
Команда delete позволяет удалять из таблиц базы данных один или несколько элементов. Так же как для insert, update и modify, в команде delete можно использовать рабочую область по умолчанию, внут- ренние таблицы и предложение where:
Первый оператор delete удаляет данные клиента с идентификационным номером 12345678, которые содержатся в рабочей области customers. Второй оператор delete использует данные внутренней табли- цы, и последний оператор delete удаляет данные всех клиентов, идентификационный номер которых начинается с 1.
Напомним, что знак процента (%) применяется в операторах Орел SQL для задания маски,
состоящей из любой последовательности символов.
Если заданные элементы не найдены, то системный код возврата sy-subrc будет ненулевым. При коллективном удалении sy-subrc будет иметь значение 0 только в том случае, если до операции удаления каждой строке внутренней таблицы соответствовал элемент базы данных.
Динамическое задание имен таблиц
Все команды, описанные в предыдущих разделах, имеют свои динамические версии, которые обес- печивают задание имени таблицы базы данных во время выполнения. Например, можно заранее под- готовить текст программы и в процессе ее выполнения ввести имя таблицы. Дня этого имя программы нужно указать в круглых скобках:
В этом кратком примере имя таблицы задается сразу перед оператором insert. На практике же имя таблицы часто задается из другой программы и передается через интерфейс.
Резюме
• Базовыми командами Open SQL являются insert, update, modify и delete.
• Операторы Open SQL поддерживают изменение как отдельной строки, так набора строк, содер-
жащихся во внутренней таблице.
• Можно динамически задавать название таблицы базы данных (заключив его в круглые скобки).
В следующей главе будут рассмотрены способы экспорта составных объектов данных (например,
вложенных внутренних таблиц) во временную память или в постоянные таблицы.

Глава 14
Экспорт и импорт
составных объектов
данных
• Передача составных объектов данных в программы
• Использование области памяти АВАР/4 в качестве
программного интерфейса
Хранение составных объектов в базе данных

160 Глава 14
Составные объекты данных АВАР/4 строятся из записей и внутренних таблиц. Например, в главе 4
описывалось применение вложенных внутренних таблиц, каждая строка которых содержит поля или другие внутренние таблицы. Однако до сих пор речь шла только о внутренних таблицах, которые ис- пользовались как временные объекты и "время жизни" которых исчислялось временем выполнения той программы, где они были определены.
В системе R/3 оперативные данные приложений хранятся в таблицах базы данных. В предыдущих главах было показано, как считывать или изменять эти данные, используя операторы Open SQL типа select или insert. В отличие от внутренних таблиц таблицы базы имеют "плоскую" структуру, т.е. эле- менты таблицы состоят только из полей и не содержат других таблиц. Содержимое объектов локальных программ, таких как записи или внутренние таблицы, допускается сохранять в таблицах реляционной базы данных. Однако в этом случае такой объект должен быть преобразован в плоскую структуру.
Применение команд export и import обеспечивает запись этих составных объектов в базу данных и чтение из нее с помощью одной операции. Операторы export и import дают возможность объединять несколько составных объектов разных типов, хранить и извлекать их как один объект. Они позволяют импортировать составные объекты с различным количеством вложенных объектов без излишних пре- образований.
Благодаря технологии export и import осуществляется экспорт составных объектов как во временные объекты, сохраняющиеся в рабочих программах (хранилище носит название АВАР/4 Memory), так и в по- стоянные таблицы базы данных. Особенно эффективно использование АВАР/4 Memory при передаче боль- шого количества составных объектов в вызываемую программу (при этом может быть несколько уровней вызова). При создании постоянных составных объектов с помощью команды export (второй способ сохра- нения таблиц) не нужно заботиться о преобразовании вложенных таблиц в плоскую структуру.
Технология export и import дает солидные преимущества при работе с приложениями, которые при- меняют объекты данных, построенные из одной или нескольких таблиц или содержащие вложенные внутренние таблицы. В частности, в учебном примере можно одновременно использовать внутренние таблицы, содержащие информацию о клиентах и заказах.
Временное хранение
Допустим, требуется передать набор локальных объектов данных в программу для временного хра- нения. Для этого используется оператор export с дополнением to memory, после которого указывается идентификатор id. Рассмотрим тот же пример программы для туристического агентства. Приведенные ниже тексты содержат две внутренние таблицы — all_customers и all_bookings, которые с помощью одно- го оператора export передаются за один шаг как единый кластер во временную рабочую область основ- ной памяти, заданную посредством идентификатора CUSTBOOK (идентификатор кластера, содержащего обе внутренние таблицы).
Все таблицы, содержащиеся в кластере CUSTBOOK, можно извлечь с помощью одного оператора import:
В данном примере внутренние таблицы all_customers и all_bookings, хранящиеся в кластере памяти
CUSTBOOK, копируются во внутренние таблицы программы с такими же именами.
Разрешается задавать любые имена объектов данных, в которые импортируется таблица
из памяти. Подробные пояснения приведены • разделе "Использование локальных имен
объектов памяти".
Размер идентификатора, указанного после дополнения id, не должен превышать 32 символов. Ко- манда export всегда заново записывает содержимое рабочей области памяти, указанной с помощью идеи-

Экспорт и импорт составных объектов данных 161
тификатора, поэтому фактически в кластере памяти находятся части данных, которые были экспорти- рованы последней командой export. Значение системного кода возврата sysubrc после команды import,
не равное нулю, говорит о том, что по заданному идентификатору кластера памяти не содержится объекта данных. При этом на экран выводится сообщение, что не получено никаких данных.
Операторы import и export могут работать с одним кластером, содержащим любое
количество разных объектов, например поля, записи, внутренние таблицы и вложенные
внутренние таблицы.
Пропуск объектов
Часто, используя оператор import, не нужно извлекать все объекты, записанные в память, некоторые из них вполне можно пропустить. Например, из того же кластера CUSTBOOK приведенной ранее про- граммы можно считать только таблицу all_bookings без таблицы all_customers:
Имена экспортируемых объектов (в примере — содержимое CUSTBOOK) и имена в операторе import
(в приведенных выше текстах — all_bookings) определяют, какой объект считывается. Если имя объекта в операторе import не содержится в объекте Memory, то в этот объект ничего не будет считано. Например,
используя тот же кластер CUSTBOOK, можно воспользоваться следующим программным кодом:
Здесь внутренняя таблица new_customers останется пустой после считывания, поскольку таблица с таким именем не экспортировалась. Возможность применения различных имен для объектов одинако- вой структуры будет рассмотрена в следующем разделе.
Несоответствие имен объектов экспортируемой и импортируемой структур приводит к ошибке в выполнении программы.
Использование локальных имен для объектов памяти
Оператор import допускает переключение имен объектов с помощью дополнения to, которое указывается после имени каждого импортируемого объекта. Например, если внутренняя таблица, в которую необходимо считать таблицу all_bookings, называется new_bookings, то она заполняется следующим образом:
В этом случае новая внутренняя таблица new_bookings, объявленная в операторе data, заполняется таб- лицей all_bookings, которая содержится в кластере CUSTBOOK. Таблица all_customers не извлекается.
Переключение имен при экспорте таблиц можно осуществить с помощью аналогичной записи, но с дополнением from :
Содержимое таблицы old_customers экспортируется в таблицу all_customers, а таблицы old_book- ings — в all_bookings, и обе они размещаются в объекте памяти с именем CUSTBOOK.
Очистка содержимого объектов памяти
Используя команду free memory, можно освободить определенную часть памяти. Если идентификатор не указывается, то из памяти удаляется все:
И приведенном примере стирается содержимое кластера CUSTBOOK, а его имя автоматически уда- ляется.

162 Глава 14
Работа с памятью на разных уровнях
вложения программ
АВАР/4 поддерживает несколько способов вызова программ. Например, диалоговая программа с эк- раном для ввода значений может вызываться из другой программы. Доступ к памяти в АВАP/4 обес- печивается для нескольких вложенных уровней вызывающих программ.
Более подробно вызов программ рассматривается в главах 18 "Выполнение отчета"
и 21 "Транзакции".
Например, если с помощью команды submit (представить) вызван отчет, то вызывающая программа может экспортировать часть объектов данных, а вызванный отчет — считать их. Аналогичным образом данные могут передаваться вызванным транзакциям. Объекты памяти в АВАР/4 существуют только в про- цессе выполнения программы. Другая сессия того же или другого пользователя получает свою "собственную"
область памяти, и передавать данные между ними нельзя. Всякий раз, когда пользователь открывает новую сессию (указав: System
Create Session на любом экране R/3), создается новая область памяти.
Использование постоянных таблиц
На практике временное хранение а памяти, описанное выше, чаще всего применяется для передачи объектов данных между программами с перекрестными вызовами. После завершения программы содер- жимое памяти теряется. Если необходимо сохранить объект, чтобы потом использовать в другой про- грамме, его следует записать в постоянное хранилище, как показано в следующем разделе.
Экспорт и импорт в таблицу базы данных
Используя синтаксис команд export и import, аналогичный командам для работы с памятью АВАР/4,
можно записывать и считывать составные объекты из таблиц базы данных. Например, экспорт такой же внутренней таблицы, как в приведенном ранее примере, в таблицу базы zflight реализуется следую- щим образом:
Различие только в том, что для хранения объектов данных используется таблица базы.
Для импорта внутренних таблиц all_customers all_bookings можно применить другую программу:
Два символа zz после имени таблицы, заключенные в круглые скобки, используются как идентифи- катор области для указания секции этой таблицы. Данный идентификатор является обязательным, и система объединяет его с идентификатором, следующим после ключевого слова id. Символы zz указы- вают на секцию таблицы zflight, куда записываются внутренние таблицы и откуда они будут считывать- ся. Так как таблица zflight выступает в роли контейнера объектов данных, разработчику не надо заботиться о ее внутренней структуре: управление возложено на АВАР/4. Это большое достоинство технологии экспорта-импорта, поскольку в противном случае разработчику пришлось бы вручную раз- делять составные объекты на плоские строки таблицы базы данных. В качестве идентификаторов об- ласти допускается применение любых двух символов.
В следующем разделе объясняется, как работать с разными таблицами для экспорта и импорта. На практике различные приложения используют разные таблицы (так, например, все программы для бро- нирования авиабилетов могут применять таблицу zflight). Значение системного кода возврата sy-subrc после выполнения оператора import, не равное нулю, говорит о том, что в таблице базы данных по указанному идентификатору объект данных не найден.

Экспорт и импорт составных объектов данных 163
Точно так же, как для экспорта и импорта с использованием памяти, в таблицах базы важны только имена объектов. Допускается пропуск объекта при чтении и переключение имен с помощью дополне- ний: to (import) и
(export).
Пропуск объектов позволяет добавлять или удалять новые объекты данных, не оказывая влияния на уже существующие. Например, имеются две внутренние таблицы и
идентифи- катор которых указан в первой версии программы бронирования авиабилетов. В следующую версию можно добавить новую таблицу all_carriers (транспортные компании). Тогда новая версия программы для импорта будет выглядеть так:
Если новая версия программы будет работать с кластером, в который таблицы записывались с мощью старой версии программы, то оператор import скопирует данные во внутренние таблицы и
a останется пустой.
Определение таблицы базы данных
для импорта и экспорта
Можно определить таблицу базы данных только для выполнения операторов export и import.
При определении таблицы для экспорта и импорта следует руководствоваться указаниями,
приведенными в разделе
таблицы или структуры" главы 5.
Таблица должна иметь стандартизованную удовлетворяющую следующим правилам:
Если таблица содержит информацию, относящуюся к определенному Client (клиент), то первым должно быть поле с именем
(тип Dictionary
2. Поле
(тип Dictionary char (символьный), размер 2) должно содержать идентификатор области.
После двух полей, указанных в пунктах 1 и 2, следуют ключевые поля таблицы. Все они должны иметь тип char и содержать ключ для составных объектов, указанный после дополнения id в операторах export и import. Разработчик может сам задать этот ключ.
4. Последним полем ключа должно стать поле
(типа int4). Его значение автоматически уста- навливается при операциях export и import.
За полем, указанным в пункте 4, может следовать любое число полей, не влияющих на выпол- нение оператора export. Значения этих полей разрешается задавать в явном виде до экспорта.
В них содержится административная информация типа даты экспорта или имени пользователя.
6. Поля данных должны завершаться полями clustr (тип int2) и clustd (тип значения кото- рых присваиваются автоматически при операциях export и import.
В поле таблицы clustd хранится содержимое составных объектов в сжатом виде. Если его нельзя разместить в одном элементе таблицы, оно автоматически распределяется по нескольким. Размер стро- ки таблицы, включая все поля ключа и данных, должен составлять либо 3800, либо 7600 байт. В зави- симости от СУБД возможен и большой размер элементов таблицы. Пример таблицы для экспорта и импорта данных приведен на рис. 14.1.
Несмотря на то что идентификатор, указанный после дополнения id в операторах export и import,
представлен как одно длинное символьное поле, разрешается задавать структуру. Для этого следует опи- сать включаемую в Dictionary структуру такого количества ключевых табличных полей, которое необ- ходимо в соответствии с указанным выше правилом 3, и использовать ее с помощью определений tables для наложения на идентификатор.

164 Глава 14
Рис. 14.1
Таблицы базы данных
для экспорта и импорта
данных
Резюме
• Команды export и import сохраняют и считывают составные объекты за одну операцию. Объекты могут состоять из полей, записей и внутренних таблиц произвольных структур, поэтому эти команды позволяют избежать преобразования глубоко структурированных объектов в плоские структуры.
• Технология export и import может применяться для хранения данных как в памяти, так и в таб- лицах базы данных.
• Память в АВАР/4 можно использовать в качестве интерфейса для передачи составных объектов в вызываемые программы даже через несколько уровней вложенных вызовов.
• Составные объекты можно изменять, не конвертируя уже существующие.
В этой части книги рассматривались элементарные методы, используемые в языке АВАР/4 для чте- ния и изменения таблиц базы данных и работы с внутренними таблицами. В следующей части описы- вается специальная технология извлечения информации из базы данных и способы представления ее пользователю.

Часть V
Создание отчетов
1   ...   8   9   10   11   12   13   14   15   ...   24


написать администратору сайта