Использование переменной INDICATOR для эмуляции NULL значений SQL

Другая возможность состоит в том, чтобы обрабатывать переменную indicator, связывая ее с каждой переменной главного языка, специальным способом, эмулирующим поведение NULL значений SQL. Всякий раз, когда вы используете одно из этих значений в вашей программе, например в предложении if … then, вы можете сначала проверить связанную переменную indicator, является ли ее значение=NULL. Если это так, то вы обрабатываете переменную по-другому. Например, если NULL значение было извлечено из поля city для главной переменной city, которая связана с переменной indicator — i_city, вы должны установить значение city равное последовательности пробелов. Это будет необходимо, только если вы будете распечатывать его на принтере; его значение не должно отличаться от логики вашей программы. Естественно, i_city автоматически устанавливается в отрицательное значение. Предположим, что вы имели следующую конструкцию в вашей программе:
If sity = ‘ London ‘ then comm: = comm + .01 else comm: = comm — .01

Любое значение, вводимое в переменную city, или будет равно "London" или не будет равно. Следовательно, в каждом случае значение комиссионных будет либо увеличено либо уменьшено. Однако, эквивалентные команды в SQL выполяняются по разному:
EXEC SQL UPDATE Salespeople SET comm = comm + .01 WHERE sity = ‘ London ‘;

и
EXEC SQL UPDATE Salespeople SET comm = comm .01; WHERE sity < > ‘London’;
( Вариант на ПАСКАЛе работает только с единственным значением, в то врем как вариант на SQL работает со всеми таблицами. ) Если значение city в варианте на SQL будет равно значению NULL , оба предиката будут неизвестны, и значение comm, следовательно, не будет изменено в любом случае. Вы можете использовать переменную indicator чтобы сделать поведение вашего главного языка непротиворечащим этому, с помощью создания условия, которое исключает NULL значения:
If i_city > = O then begin If city = ‘ London ‘ then comm: = comm + .01 else comm: = comm — .01; end; {begin and end нужны здесь только для понимания}
ПРИМЕЧАНИЕ: Последняя строка этого примера содержит ремарку — { begin и end необходимы только для понимания }
В более сложной программ, вы можете захотеть установить Булевую переменную в "верно" , чтобы указать что значение city =NULL. Затем вы можете просто проверять эту переменную всякий раз, когда вам это необходимо.

‹ Переменная INDICATOR
Вверх
Другое использование переменной INDICATOR ›

Оцените статью
Айтистанция
Добавить комментарий

Adblock
detector