Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Запускать с помощью: pgcci Source && ./Source.exe
- */
- #include <sqlca.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <sys/time.h>
- #include <unistd.h>
- #include <sqltypes.h>
- void error_func(char *message) {
- printf("Error code: %d\n", sqlca.sqlcode);
- printf("Message: %s\n", message);
- printf("Description: %s\n", sqlca.sqlerrm.sqlerrmc);
- }
- int main() {
- EXEC SQL begin declare section;
- int buf;
- EXEC SQL end declare section;
- /*********************\
- |* Подключаемся к БД *|
- \*********************/
- EXEC SQL connect to students@fpm2.ami.nstu.ru user "pmi-b6103" using "juIppOw";
- if(sqlca.sqlcode !=0 ) {
- printf("Authentication failed\n");
- return 1;
- }
- /*******************************************************\
- |* Устанавливаем схему, в которой будем искать таблицу *|
- \*******************************************************/
- EXEC SQL set search_path to pmb6103;
- if(sqlca.sqlcode != 0) {
- printf("Error\n");
- return 2;
- }
- EXEC SQL begin; // Создание транзакции
- /**********************\
- |* Выполнение запроса *|
- \**********************/
- EXEC SQL SELECT COUNT(DISTINCT spj.n_post) into :buf
- FROM pmib6103.spj
- JOIN pmib6103.j ON j.n_izd = spj.n_izd
- WHERE j.town IN (SELECT p.town
- FROM pmib6103.p
- WHERE p.cvet = 'Красный');
- switch (sqlca.sqlcode) {
- // Когда запрос завершился успешно и получены данные
- case 0:
- printf("Result: %d\n", buf);
- EXEC SQL COMMIT; // Применение транзакции
- break;
- // Когда запрос завершился успешно, но данных нет
- case 100:
- printf("No data\n");
- EXEC SQL COMMIT; // Применение транзакции
- break;
- // Произошла какая-то ошибка
- default:
- error_func("Error while processing query");
- EXEC SQL ROLLBACK; // Отмена транзакции
- break;
- }
- return 0;
- }
Advertisement