Чтение онлайн

на главную

Жанры

Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil

Востриков С М

Шрифт:

if(ExecSP){

printf("<br><i>Attempt to call SP with the following

parameters:

' %s' , '%s' , ' %s' , '%s'</i>.....",form_b_index,form_b_name,form_b_a

uthor,form_b_theme);

Как можно видеть, принципиально инициализация структур для входящих параметров не сильно отличается от инициализации исходящих параметров из первого примера:

isqlda = (XSQLDA *)malloc(XSQLDA_LENGTH(4));

isqlda->version = SQLDA_VERSION1;

isqlda->sqln = 4;

isqlda->sqld = 4;

isqlda->sqlvar[0] .sqldata = (char *)&form_b_index;

isqlda->sqlvar[0].sqltype = SQL_TEXT;

isqlda->sqlvar[0].sqllen = strlen(form_b_index);

isqlda->sqlvar [1] . sqldata = (char * ) &f orm_b_name,

isqlda->sqlvar[1].sqltype = SQL_TEXT;

isqlda->sqlvar[1].sqllen = strlen(form_b_name);

isqlda->sqlvar[2].sqldata = (char *)&form_b_author;

isqlda->sqlvar[2].sqltype = SQL_TEXT;

isqlda->sqlvar[2].sqllen = strlen(form_b_author);

isqlda->sqlvar[3].sqldata = (char *)&form_b_theme;

isqlda->sqlvar[3].sqltype = SQL_TEXT;

isqlda->sqlvar[3].sqllen = strlen(form_b_theme);

osqlda = (XSQLDA *)malloc(XSQLDA_LENGTH(1));

osqlda -> version = SQLDA_VERSION1;

osqlda -> sqln = 1; osqlda -> sqld = 1;

osqlda->sqlvar[0].sqldata = (char *)&res_code;

osqlda->sqlvar[0].sqltype = SQL_LONG;

osqlda->sqlvar[0].sqllen = sizeof(long);

osqlda->sqlvar[0].sqlind = &o_ind[0];

Вызов

ХП происходит сразу, без предварительной подготовки (подробнее об этом будет рассказано несколько ниже):

isc_dsql_exec_immed2(

status_vector,

&db_handle,

&transaction_handle,

0,

SPCall,

SQL_DIALECT_V6,

isqlda,

osqlda};

if (status_vector[0] == 1 && status_vector[1]){

isc_print_status(status_vector) ;

return(1);

}

if(res_code==0){

printf(" <t»successfly</b>.");

}

else{

printf(" <b>failed with result_code=%i</b>.",res_code);

}

free(isqlda);

free(osqlda);

}

Далее идет выборка данных из таблицы базы данных - это несколько модифицированная часть из первого примера, которая анализирует, были ли получены данные или таблица оказалось густой и отображать нечего.

printf ("<brxbr>&nbsp; &nbsp; &nbsp; Part 2: Select without input

parameters<br>");

osqlda = (XSQLDA *)malloc(XSQLDA_LENGTH(6));

osqlda -> version = SQLDA_VERSION1;

osqlda -> sqln = 6;

osqlda->sqlvar[0].sqldata = (char *)&b_id;

osqlda->sqlvar[0].sqltype = SQL_LONG;

osqlda->sqlvar[0].sqlind = &o_ind[0];

osqlda->sqlvar[1].sqldata = (char *)&b_index;

osqlda->sqlvar[1].sqltype = SQL_TEXT;

osqlda->sqlvar[1].sqlind = &o_ind[l];

osqlda->sqlvar[2].sqldata = (char *)&b_name;

osqlda->sqlvar[2].sqltype = SQLJVARYING;

osqlda->sqlvar[2].sqlind = &o_ind[2];

osqlda->sqlvar[3].sqldata = (char *)&b_author;

osqlda->sqlvar[3].sqltype = SQL_VARYING;

osqlda->sqlvar[3].sqlind = &o_ind[3];

osqlda->sqlvar[4].sqldata = (char *)&b_added;

osqlda->sqlvar[4].sqltype = SQL_TIMESTAMP;

osqlda->sqlvar[4].sqlind = &o_ind[4];

osqlda->sqlvar[5].sqldata = (char *)&b_theme;

osqlda->sqlvar[5].sqltype = SQL_VARYING;

osqlda->sqlvar[5].sqlind = &o_ind[5];

isc_dsql_allocate_statement(

status_vector,

&db_handle,

&statement_handle);

if (stacus_vector[0] == 1 && status_vector[1]){

isc_print_status(status_vector);

return{1);

}

isc_dsql_prepare(

status_vector,

&transaction_handle,

&statement_handle,

0,

query,

SQL_DIAL,ECT_Y6,

osqlda);

if (status_vector [ 0] == 1 && status_vector[1]) {

isc_print_status(status_vector) ;

return(1);

}

Заметьте,

что если бы запрос гарантированно возвращал одну запись, то надобность в вызове функции isc_dsql_fetchoтпaлa бы, а на месте последних двух пустых значений в вызове нижеследующей функции были бы соответственно isqlda и osqlda:

isc_dsql__execute2 (

status_vector,

&transaction_handle,

&statement_handle,

1,

NULL,

NULL);

if (status_vector[0] == 1 && status_vector[1]){

isc_print_status (status_vector);

return(1);

}

while((fetch_code = isc_dsql_fetch(

status_vector,

&staternent .handle,

1,

osqlda))==0)

{

Вот здесь и производится проверка на существование хотя бы одной записи в таблице:

if (!hDisplayed){

hDisplayed=l;

printf ("<brxbr><center><table border=0 bgcolor=black

cellpadding=l cellspacing=l><tr align=center bgcolor=#999999>

<td>Book ID</tr> <td>CODE</tr> <td>TITLE</tr> <td>AUTHOR</tr>

Поделиться:
Популярные книги

Неожиданный наследник

Яманов Александр
1. Царь Иоанн Кровавый
Приключения:
исторические приключения
5.00
рейтинг книги
Неожиданный наследник

Ты не мой Boy 2

Рам Янка
6. Самбисты
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Ты не мой Boy 2

Курсант: назад в СССР

Дамиров Рафаэль
1. Курсант
Фантастика:
попаданцы
альтернативная история
7.33
рейтинг книги
Курсант: назад в СССР

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4

Приручитель женщин-монстров. Том 7

Дорничев Дмитрий
7. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 7

Я – Орк. Том 3

Лисицин Евгений
3. Я — Орк
Фантастика:
юмористическое фэнтези
попаданцы
5.00
рейтинг книги
Я – Орк. Том 3

Титан империи

Артемов Александр Александрович
1. Титан Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Титан империи

Цеховик. Книга 1. Отрицание

Ромов Дмитрий
1. Цеховик
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Цеховик. Книга 1. Отрицание

Я все еще не князь. Книга XV

Дрейк Сириус
15. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я все еще не князь. Книга XV

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Невеста напрокат

Завгородняя Анна Александровна
Любовные романы:
любовно-фантастические романы
6.20
рейтинг книги
Невеста напрокат

Изменить нельзя простить

Томченко Анна
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Изменить нельзя простить

Фиктивный брак

Завгородняя Анна Александровна
Фантастика:
фэнтези
6.71
рейтинг книги
Фиктивный брак

Младший научный сотрудник

Тамбовский Сергей
1. МНС
Фантастика:
попаданцы
альтернативная история
6.40
рейтинг книги
Младший научный сотрудник