Самоссылающиеся соединения (2)
SELECT p1.fname, p1.lname, p2.fname, p2.lname,
p1.town
FROM sales_person p1, sales_person p2
WHERE p1.town = p2.town
Чтобы использовать таблицу в самоссылающемся соединении, необходимо использовать корреляционные имена.
В этом примере мы запрашиваем служащих-продавцов, которые живет в одном и том же городе. Таблица sales_person используется дважды; однажды как P1 и однажды как P2. Предложение WHERE подбирает строки, у которых один и тот же город.
В этом примере есть один недостаток – служащие-продавцы будут “соединяться”сами с собой. Чтобы этого не происходило, необходимо добавить предикат в предложение WHERE.
Использование host-переменных (1)
EXEC SQL
INSERT INTO CRIMES
(CRIME_CODE, CRIME)
VALUES
( :ccode, :the_crime );
После декларирования host-переменных, их можно использовать в SQL предложениях.
EXEC SQL BEGIN DECLARE SECTION;
short ccode;
char the_crime[79];
EXEC SQL END DECLARE SECTION;
Для того, чтобы сделать программы более гибкими, мы можем использовать переменные в SQL. Эти переменные, называемые хост-переменными, будут распознаваться и SQL и host-языком.
Все host-переменные должны быть объявлены в разделе
BEGIN DECLARE SECTION;
END DECLARE SECTION;
Host-переменные и индикаторные переменные
EXEC SQL BEGIN DECLARE SECTION;
short ccode;
char the_crime [79];
short indicator;
EXEC SQL END DECLARE SECTION;
Поля, которые могут содержать NULL значения, требуют специальной обработки.
DB2 не обновляет host-переменную, если связанный с ней столбец содержит NULL-значение.
Использование индикаторных переменных
· Индикаторная переменная, если она требуется, должна следовать за host-переменной, например:
EXEC SQL
SELECT CRIME
INTO :the_crime :indicator
FROM CRIMES
WHERE CRIME_CODE = :ccode;
· Приложение должно протестировать значение индикаторной переменной. Если значение индикаторной переменной:
- >=0 , в host-переменную принято не пустое значение (не NULL)
- < 0 , значение столба – NULL (значение отсутствует)
Индикаторная переменная должна следовать сразу же за host-переменной без запятой.
Использование курсоров
· DB2 включает механизм, называемый курсором, позволяющий приложению извлекать множество строк.
· Вы можете использовать курсор чтобы извлечь строки из результирующего множества.
· Курсор идентифицирует текущую строку результирующей таблицы, полученной в результате выполнения SELECT.
· Приложение может извлечь последовательно каждую строку результирующей таблицы.
Работа с курсорами
Декларирование курсора
Открытие курсора
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.