Entering content frame

 Example for Using a Descriptor 

EXEC SQL BEGIN DECLARE SECTION;

char stmnt [255];

EXEC SQL END DECLARE SECTION;

strcpy (stmnt, "select hno, name, price from hotel");

EXEC SQL PREPARE SEL FROM :stmnt;

EXEC SQL EXECUTE SEL;

EXEC SQL PREPARE FET FROM 'FETCH USING DESCRIPTOR';

EXEC SQL DESCRIBE FET;

/* Bind each column to a piece of memory */

for (i=0;i<sqlda.sqln;i++) {
  sqlvartype *sqlvar = &sqlda.sqlvar[i];

  switch(sqlvar->coltype){
    case (sqlfixed) : {
      if (sqlvar->colfrac == 0) {
        sqlvar->hostvartype = sqlvint4;

        sqlvar->hostcolsize = sizeof(int);

        sqlvar->hostvaraddr = malloc(sizeof(int));
      }
      else {
        sqlvar->hostvartype = sqlvreal4;

        sqlvar->hostcolsize = sizeof(float);

        sqlvar->hostvaraddr = malloc(sizeof(float));
      }
      break;

    }
    case (sqlchar) : {
      sqlvar->hostvartype = sqlvchar;

      sqlvar->hostcolsize = sqlda.sqlvar[0].collength;

      sqlvar->hostvaraddr = malloc(sizeof(int));

      break;

    }
    default : {
      /* TODO: support more datatypes */

    }
    }
    }

    /* Process result table */

    EXEC SQL EXECUTE FET USING DESCRIPTOR;

    while (sqlca.sqlcode == 0) {
      EXEC SQL EXECUTE FET USING DESCRIPTOR;
    }

 

Leaving content frame