#include $include sqlca; $include sqlda; int main() { puts("Test4 - prepared select\n"); /* DB_NAME -> skutecne jmeno databaze */ $database DB_NAME; /* deklarace promennych */ $int isbn; $char nazev[31]; $char autor[31]; $char query[80]; $int q_isbn; $int i; $int desc_count; $char result[31]; $char name[31]; /* programove skladani dotazu */ sprintf(query, "%s %s", "select isbn, nazev, autor from kniha", "where isbn > ?"); q_isbn = 500; /* priprava dotazu */ $prepare qid from $query; /* deklarace kurzoru */ $declare testcur cursor for qid; /* alokace SQL deskriptoru */ $allocate descriptor 'testdesc'; /* otevreni kurzoru s vyplnenim parametru */ $open testcur using $q_isbn; /* zjisteni deskriptoru */ $describe qid using sql descriptor 'testdesc'; /* zjisteni poctu polozek deskriptoru */ $get descriptor 'testdesc' $desc_count = count; /* vypis jmen sloupcu */ for (i = 1; i <= desc_count; i++) { $get descriptor 'testdesc' value $i $name = name; printf("%-30s ", name); } printf("\n"); /* iterace kurzoru */ for (;;) { /* dalsi radka z kurzoru */ $fetch testcur using sql descriptor 'testdesc'; if (SQLCODE != 0) { /* SQLNOTFOUND indikuje vycerpani kurzoru */ if (SQLCODE != SQLNOTFOUND) { printf("Error %d\n", SQLCODE); } break; } /* vypis jednotlivych sloupcu */ for (i = 1; i <= desc_count; i++) { $get descriptor 'testdesc' value $i $result = data; printf("%-30s ", result); } printf("\n"); } /* zavreni kurzoru */ $close testcur; return 0; }