русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

EXEC SQL FETCH Londonsales


Дата добавления: 2015-07-09; просмотров: 452; Нарушение авторских прав


INTO :id_num, :Salesperson, :loc, :comm;

writeln (id_num, Salesperson, loc, comm);

writeln ('Do you want to see more data? (Y/N)');

readln (response);

it response = 'N' then Look_at_more: = False

end;

EXEC SQL CLOSE CURSOR Londonsales;

 

 

В Паскале, знак : = означает - " является назначенным значением из ", в то время как = еще имеет обычное значение " равно ". Функция writeln записывает ее вывод, и затем переходит к новой строке.

Одиночные кавычки вокруг символьных значений во втором writeln и в предложенииif ... then- обычны для Паскаля, что случается при дубликатах в SQL.

В результате этого фрагмента, Булева переменная с именем Look_at _more должна быть установлена в состояние верно, открыт курсор, и введен цикл. Внутри цикла, строка выбирается из курсора и выводится на экран. У пользователя спрашивают, хочет ли он видеть следующую строку. Пока он не ответилN ( Нет ), цикл повторяется, и следующая

строка значений будет выбрана.

Хотя переменные Look_at_more и ответ должны быть обьявлены как Булева переменная и символьная(char) переменная, соответственно, в разделе обьявлений переменных в Паскаля, они не должны быть включены в раздел обьявлений SQL, потому что они не используются в командах SQL.

Как вы можете видеть, двоеточия перед именами переменных не используются для не-SQL операторов. Далее обратите внимание, что имеется оператор CLOSE CURSORсоответствующий оператору OPEN CURSOR. Он, как вы поняли, освобождает курсор значений, поэтому запрос будет нужно выполнить повторно с оператором OPEN CURSOR, прежде чем перейти в выбору следующих значений.

Это необязательно для тех строк которые были выбраны запросом после закрытия курсора, хотя это и обычная процедура.

Пока курсор закрыт, SQL не следит за тем, какие строки были выбраны. Если вы открываете курсор снова, запрос повторно выполняется с этой точки, и вы начинаете все сначала.



Этот пример не обеспечивает автоматический выхода из цикла, когда все строки уже будут выбраны. Когда у FETCH нет больше строк которые надо извлекать, он просто не меняет значений в переменных предложения INTO. Следовательно, если данные исчерпались, эти перемен-

ные будут неоднократно выводиться с идентичными значениями, до тех пор пока пользователь не завершит цикл, введя ответ - N.

 

 

============== SQL КОДЫ ===================

 

Хорошо было бы знать, когда данные будут исчерпаны, так чтобы можно было сообщить об этом пользователю и цикл завершился бы автоматически. Это - даже более важно чем например знать что команда SQL выполнена с ошибкой. Переменная SQLCODE ( называемая еще SQLCOD в ФОРТРАНе ) предназначена чтобы обеспечить эту функцию. Она должна быть определена как переменная главного языка и должна иметь тип данных который в главном языке соответствует одному из точных числовых типов SQL, как это показано в Приложении B.

Значение SQLCODE устанавливается каждый раз, когда выполняется команда SQL. В основном существуют три возможности:

 

1. Команда выполнилась без ошибки, но не произвела никакого

действия. Для различных команд это выглядит по разному:

 

а) Для SELECT, ни одна строка не выбрана запросом.

 

б) Для FETCH, последняя строка уже была выбрана, или ни

одной строки не выбрано запросом в курсоре.

 

в) Для INSERT, ни одной строки не было вставлено ( подразуме-

вается что запрос использовался чтобы сгенерировать значе-

ния для вставки, и был отвергнут при попытке извлечения лю-

бой строки.

 

г) Для UPDATE и DELETE, ни одна строка не ответила усло-

вию предиката, и следовательно никаких изменений сделано

в таблице не будет.

 

В любом случае, будет установлен код SQLCODE = 100.

 

2. Команда выполнилась нормально, не удовлетворив ни одному из выше указанных условий. В этом случае, будет установлен код

SQLCOD = 0.

 

3. Команда сгенерировала ошибку. Если это случилось, изменения сделанные к базе данных текущей транзакцией, будут восстанов лены( см. Главу 23 ).

В этом случае будет установлен код SQLCODE = некоторому от рицательному числу, определяемому проектировщиком. Задача это го числа, идентифицировать проблему, так точно насколько это во зможно. В принципе, ваша система должна быть снабжена подп рограммой, которая в этом случае, должна выполниться чтобы вы дать для вас информацию расшифровывающее значение негатив ного числа определенного вашим проектировщиком. В этом случае некоторое сообщение об ошибке будет выведено на экран или за писано в файл протокола, а программа в это время выполнит вос становление изменений для текущей транзакции, отключится от базы данных и выйдет из нее. Теперь мы можем усовершенствовать наш предыдущий пример для выхода из цикла автоматически, при условии что курсор пуст, все строки выбраны, или произошла ошибка:

Look_at_more: = lhe;

EXEC SQL OPEN CURSOR Londonsales;



<== предыдущая лекция | следующая лекция ==>
EXEC SQL SELECT DISTINCT snum | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.049 сек.