Программируемый клиент ORACLE

Содержание

Слайд 2

Два вида программного интерфейса

Предкомпилятор
CALL- интерфейс

Два вида программного интерфейса Предкомпилятор CALL- интерфейс

Слайд 3

Достоинства и недостатки подходов

СПРАВОЧНИК ВЫЗОВОВ
Call –интерфейс требует детального знания процедур и

Достоинства и недостатки подходов СПРАВОЧНИК ВЫЗОВОВ Call –интерфейс требует детального знания процедур
функций:
названия;
количество пар-ров;
тип параметров;
знание кодов возврата;
обработка исключительных ситуаций;
и т.п.
Время и трудозатраты на разработку - возрастает

ПРЕДКОМПИЛЯТОР
Использовать проще:
наглядность;
понятность;
структурированность
Однако, мобильность программ – меньше, так как требуется предкомпилятор Oracle, позволяющий строить код исходной программы на С/С++, Fortran, Ada, Cobol, Pascal и др.

Слайд 4

Возможности предкомпиляции

Один вызов к Oracle автоматически преобразуется в несколько вызовов процедур(функций).
Одна программа

Возможности предкомпиляции Один вызов к Oracle автоматически преобразуется в несколько вызовов процедур(функций).
может применяться для работы с разными БД
Несколько программ могут быть отдельно предкомпилированы и совместно выполнены (собраны).

Слайд 5

Этапы разработки приложений

отладка

Этапы разработки приложений отладка

Слайд 6

Правила и соглашения технологии Pro C/C++

В программу на Pro C/C++ может быть

Правила и соглашения технологии Pro C/C++ В программу на Pro C/C++ может
включен любой оператор SQL
Перед всеми операторами SQL ставится префикс EXEC SQL
( для некоторых уникальных конструкций EXEC ORACLE).
Операторы SQL делятся на декларативные и выполняемые.
После исполнения выполняемых операторов коды возврата заносятся в SQLCA
Декларативные операторы не изменяют SQLCA

Слайд 7

Структура программы на Pro C/C++

Структура программы на Pro C/C++

Слайд 8

Секция DECLARE

Единственная
Может иметь локальную или глобальную видимость
EXEC SQL BEGIN DECLARE SECTION;
Описание переменных

Секция DECLARE Единственная Может иметь локальную или глобальную видимость EXEC SQL BEGIN
обмена данными
EXEC SQL END DECLARE SECTION;

Слайд 9

Пример
EXEC SQL BEGIN DECLARE SECTION;
Int n,no;
Char name[11];
EXEC SQL END DECLARE SECTION;
Void main(){
…………
EXEC

Пример EXEC SQL BEGIN DECLARE SECTION; Int n,no; Char name[11]; EXEC SQL
SQL select id, fio into :n,:name
from personal
where num_o = :no;
Для отличия переменных от атрибутов в SQL запросах используется символ ‘:’, перед именем переменной.

Слайд 10

Для строк переменной длины в секции DECLARE используется специальный тип VARCHAR.
Пример
VARCHAR j[40];
Автоматически

Для строк переменной длины в секции DECLARE используется специальный тип VARCHAR. Пример
порождается
Struct {
unsigned short int len;
unsigned char arr[40];
} j;
Можно использовать в программе
j.len – фактическая длина стринга
j.arr – указатель на массив содержимого

Слайд 11

INCLUDE SQLCA

EXEC SQL INCLUDE SQLCA;
Область SQLСA содержит:
флаги предупреждений;
информацию о событиях;
коды ошибок;
текст диагностики

INCLUDE SQLCA EXEC SQL INCLUDE SQLCA; Область SQLСA содержит: флаги предупреждений; информацию
ошибок;
и др. служебную информацию.

Слайд 12

Пример
…..
If( sqlca.sqlcode == 0 ) continue; //успешное завершение sql
else if(

Пример ….. If( sqlca.sqlcode == 0 ) continue; //успешное завершение sql else if( sqlca.sqlcode else cout
sqlca.sqlcode < 0 ) cout << “Ошибка выполнения”;
else cout << “ Выбрана последняя строка”;

Слайд 13

CONNECT

Соединение с ORACLE Server
EXEC SQL CONNECT :oralogpass;

CONNECT Соединение с ORACLE Server EXEC SQL CONNECT :oralogpass;

Слайд 14

Пример
EXEC SQL BEGIN DECLARE SECTION;
Varchar oralogpass[40];
EXEC SQL END DECLARE SECTION;
………
Strcpy(oralogpass.arr,”o01/o01”);
oralogpass.len=strlen(oralogpass.arr);
EXEC SQL CONNECT

Пример EXEC SQL BEGIN DECLARE SECTION; Varchar oralogpass[40]; EXEC SQL END DECLARE
:oralogpass;
………….

Слайд 15

Тело программы

Cтандартные операторы языка C/C++ ;
Операторы SQL (select,delete,insert,update);
Контроль распределенной обработки данных
EXEC SQL

Тело программы Cтандартные операторы языка C/C++ ; Операторы SQL (select,delete,insert,update); Контроль распределенной
DECLARE <имя> STATEMENT;
Связь и управление распределенной БД
EXEC SQL DECLARE <имя> DATABASE;
Изменение стандартных установок
EXEC ORACLE OPTION ( option=значение );

Слайд 16

Множественный и единичный выбор с использованием массивов м указателей.
Оператор массив(указатель) простая переменная
Select

Множественный и единичный выбор с использованием массивов м указателей. Оператор массив(указатель) простая
заголовок можно можно
Select .. Where нельзя можно
Insert.. Values() можно можно
Update .. Set.. where можно однов. можно однов.

Слайд 17

Примеры
EXEC SQL BEGIN DECLARE SECTION;
char name[100][100];
int n[100];
Float sal[100];
EXEC SQL END DECLARE SECTION;
……..
EXEC

Примеры EXEC SQL BEGIN DECLARE SECTION; char name[100][100]; int n[100]; Float sal[100];
SQL SELECT fio,id into :name,:n FROM personal; // ok!
EXEC SQL SELECT fio,id into :name,:n FROM personal
WHERE many = :sal; // неверный оператор
EXEC SQL INSERT INTO personal(fio,id,many)
VALUES(:name, :n, :sal); // ok!
EXEC SQL UPDATE SET many = :sal WHERE id = :n; //ok!
EXEC SQL UPDATE SET many = :sal WHERE id = :n[0]; // no!

Слайд 18

Оператор COMMIT WORK завершает транзакцию
EXEC SQL COMMIT WORK;
Оператор COMMIT WORK RELEASE осуществляет

Оператор COMMIT WORK завершает транзакцию EXEC SQL COMMIT WORK; Оператор COMMIT WORK

DISCONNECT
EXEC SQL COMMIT WORK RELEASE;
Имя файла: Программируемый-клиент-ORACLE.pptx
Количество просмотров: 192
Количество скачиваний: 1