#include EXEC SQL INCLUDE sqlca; #define SQLNOTFOUND 1403 int check_db(const char *s); int main() { EXEC SQL BEGIN DECLARE SECTION; char user[30] = "scott", pass[30] = "tiger"; char instanz[30] = "linx"; int pers_id = 47080; char adr[40]; EXEC SQL END DECLARE SECTION; EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :instanz; if (check_db("CONNECT")) return -1; printf("\nConnected to ORACLE as user: %s\n", user); EXEC SQL PREPARE stmt_mail FROM SELECT adresse, pers_id FROM mail_addr WHERE pers_id = :a; if (check_db("PREPARE stmt_mail")) return -1; EXEC SQL DECLARE crs_mail CURSOR FOR stmt_mail; if (check_db("PREPARE stmt_mail")) return -1; EXEC SQL OPEN crs_mail USING :pers_id; EXEC SQL WHENEVER NOT FOUND DO break; for (;;) { EXEC SQL FETCH crs_mail INTO :adr, :pers_id; printf ("%s %d\n", adr, pers_id); } EXEC SQL CLOSE crs_mail; EXEC SQL COMMIT RELEASE; return 0; } int check_db(const char *s) { char err_msg[128]; size_t buf_len, msg_len; int dberrno = sqlca.sqlcode; if (dberrno != 0) { if (dberrno == SQLNOTFOUND) { fprintf(stderr, "%s: No data found\n",s); } else { fprintf(stderr,"Error in %s at %d; error=%d\n", s,sqlca.sqlerrd[4],sqlca.sqlcode); buf_len = sizeof (err_msg); sqlglm(err_msg, &buf_len, &msg_len); fprintf(stderr,"%.*s\n", msg_len, err_msg); } } return dberrno; }