#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sqlca.h> /* SQL Communications Area */
#include "oracle_interface.h"
#define UNAME_LEN 20 /* Varchar limits */
#define PWD_LEN 40
#define DBTNS_LEN 20 /* Varchar limits */
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[UNAME_LEN]; /* SQL vars for */
VARCHAR password[PWD_LEN]; /* username and passwd */
VARCHAR dbtns[DBTNS_LEN];
VARCHAR host_cd[25];
EXEC SQL END DECLARE SECTION;
void sql_error();
void main(void){
strncpy((char *) username.arr, "riscox", UNAME_LEN);
username.len = strlen((char *) username.arr);
strncpy((char *) password.arr, "riscox", PWD_LEN);
password.len = strlen((char *) password.arr);
strncpy((char *) dbtns.arr, "mcoracle", DBTNS_LEN);
dbtns.len = strlen((char *) dbtns.arr);
EXEC SQL WHENEVER SQLERROR DO sql_error("ORACLE error under function db_connect in oracle_interface.c\n");
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbtns;
EXEC SQL WHENEVER SQLERROR DO sql_error ( "ERROR : Oracle under function subscribe in oracle_interface.c");
EXEC SQL DECLARE s_cursor CURSOR FOR
SELECT cd_negocio
FROM cad_atv_cotacoes
WHERE NVL(in_enfoque, 0) = 0;
EXEC SQL OPEN s_cursor;
EXEC SQL WHENEVER NOT FOUND DO break;
while(1){
EXEC SQL FETCH s_cursor INTO :host_cd;
printf("Host var, cdnegocio = %s\n", host_cd);
}// while(1)
EXEC SQL CLOSE s_cursor;
EXEC SQL COMMIT WORK RELEASE;
}
void sql_error(msg)
char *msg;
{
char err_msg[128];
int buf_len, msg_len;
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("\n%s\n", msg);
buf_len = sizeof (err_msg);
sqlglm(err_msg, &buf_len, &msg_len);
if (msg_len > buf_len)
msg_len = buf_len;
printf("%.*s\n", msg_len, err_msg);
EXEC SQL ROLLBACK RELEASE;
exit(1);
}