/* Example 5.5.1 */ #include #include "prompt.h" exec sql include sqlca; char custprompt[] = "Please enter a customer ID: "; int main() { exec sql begin declare section; char cid[5],user_name[20], user_pwd[10]; double dollars; int ocount; exec sql end declare section; exec sql declare dollars_cursor cursor for /* to calculate median */ select dollars from orders where cid = :cid order by dollars desc; /* ... order important */ int i; exec sql whenever sqlerror goto report_error; strcpy(user_name, "scott"); strcpy(user_pwd, "tiger"); exec sql connect :user_name identified by :user_pwd; /* ORACLE: connect */ while (prompt(custprompt, 1, cid, 4) >= 0) { /* main loop: get cid */ exec sql select count(dollars) into :ocount /* count orders by cid */ from orders where cid = :cid; if (ocount == 0) { printf("No orders retrieved for cid value %s\n",cid); continue; } /* go loop again */ /* open cursor and loop until midpoint of ordered list */ exec sql open dollars_cursor; for (i=0; i < (ocount+1)/2; i++) /* fetch at least once */ exec sql fetch dollars_cursor into :dollars; exec sql close dollars_cursor; /* loop completed */ exec sql commit work; /* release locks */ printf ("Median dollar amount = %f\n", dollars); } /* end main loop */ exec sql commit release; return 0; /* normal exit */ report_error: print_dberror(); exec sql rollback release; /* ORACLE Disconnect in error */ return 1; }