РУКОВОДСТВО ПО РЕЛЯЦИОННОЙ СУБД DB2

         

ПРЕДЛОЖЕНИЕ INSERT


Предложение INSERT имеет следующий общий формат:

INSERT

INTO        таблица [(поле [,поле] . . .)]

VALUES (константа [,константа] . . .);

ИЛИ:

INSERT

INTO        таблица [(поле [,поле] . . .)]

подзапрос;

В первом формате в «таблицу» вставляется строка, имеющая заданные значения для указанных полей, причем 1-я константа в списке констант соответствует i-му полю в списке полей. Во втором формате вычисляется «подзапрос»; копия результата, представляющего собой, вообще говоря, множество строк, вставляется в «таблицу». При этом 1-й столбец этого результата соответствует f-му полю в списке полей. В обоих случаях отсутствие списка полей эквивалентно спецификации списка всех полей в таблице (см. ниже пример 6.4.2).


Вставить в таблицу Р новую деталь. При этом номер детали, название и вес заданы соответственно переменными включающего языка НОМ_ДЕТАЛИ, НАЗВ_ДЕТАЛИ и ВЕС_ДЕТАЛИ, а цвет и город неизвестны.

ЕХЕС       SQL     INSERT

INTO                           Р (НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ВЕС)



VALUES         (:HOM_ДЕТАЛИ, :НАЗВ_ДЕТАЛИ,

:ВЕС_ДЕТАЛИ);

Опять здесь можно использовать индикаторные переменные. Например, если ЦВЕТ_ДЕТАЛИ и ГОР_ДЕТАЛИ — две следующие переменные включающего языка, ИНД_ЦВЕТА и ИНД_ГОРОДА — соответствующие индикаторные переменные, то последовательность

ИНД_ЦВЕТА = -1;

ИНД_ГОРОДА  = -1;

ЕХЕС       SQL     INSERT

INTO                           Р (НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС,

ГОРОД)

VALUES         (:HOM_ДЕТАЛИ, :НАЗВ_ДЕТАЛИ,

:ЦВЕТ_ДЕТАЛИ: ИНД_ЦВЕТА,

:ВЕС_ДЕТАЛИ,

:ГОР_ДЕТАЛИ: ИНД_ГОРОДА);

дает тот же результат, что и приведенное выше предложение INSERT.

Для простоты в дальнейшем (в этой и двух следующих главах) будем в большинстве случаев игнорировать индикаторные переменные и возможность неопределенных значений.



Содержание раздела