Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  describe.pgc   Sprache: unbekannt

 
Spracherkennung für: .pgc vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

#include <stdlib.h>
#include <string.h>

exec sql include ../regression;
exec sql include sqlda.h;

exec sql whenever sqlerror stop;

sqlda_t *sqlda1, *sqlda2, *sqlda3;

int
main (void)
{
exec sql begin declare section;
 char *stmt1 = "SELECT id, t FROM descr_t2";
 char *stmt2 = "SELECT id, t FROM descr_t2 WHERE id = -1";
 int i, count1, count2;
 char field_name1[30] = "not set";
 char field_name2[30] = "not set";
exec sql end declare section;

 char msg[128];

 ECPGdebug(1, stderr);

 strcpy(msg, "connect");
 exec sql connect to REGRESSDB1;

 strcpy(msg, "set");
 exec sql set datestyle to iso;

 strcpy(msg, "create");
 exec sql create table descr_t2(id serial primary key, t text);

 strcpy(msg, "insert");
 exec sql insert into descr_t2(id, t) values (default, 'a');
 exec sql insert into descr_t2(id, t) values (default, 'b');
 exec sql insert into descr_t2(id, t) values (default, 'c');
 exec sql insert into descr_t2(id, t) values (default, 'd');

 strcpy(msg, "commit");
 exec sql commit;

 /*
  * Test DESCRIBE with a query producing tuples.
  * DESCRIPTOR and SQL DESCRIPTOR are NOT the same in
  * Informix-compat mode.
  */

 strcpy(msg, "allocate");
 exec sql allocate descriptor desc1;
 exec sql allocate descriptor desc2;

 strcpy(msg, "prepare");
 exec sql prepare st_id1 FROM :stmt1;

 sqlda1 = sqlda2 = sqlda3 = NULL;

 strcpy(msg, "describe");
 exec sql describe st_id1 into sql descriptor desc1;
 exec sql describe st_id1 using sql descriptor desc2;

 exec sql describe st_id1 into descriptor sqlda1;
 exec sql describe st_id1 using descriptor sqlda2;
 exec sql describe st_id1 into sqlda3;

 if (sqlda1 == NULL)
 {
  printf("sqlda1 NULL\n");
  exit(1);
 }

 if (sqlda2 == NULL)
 {
  printf("sqlda2 NULL\n");
  exit(1);
 }

 if (sqlda3 == NULL)
 {
  printf("sqlda3 NULL\n");
  exit(1);
 }

 strcpy(msg, "get descriptor");
 exec sql get descriptor desc1 :count1 = count;
 exec sql get descriptor desc1 :count2 = count;

 if (count1 != count2)
 {
  printf("count1 (%d) != count2 (%d)\n", count1, count2);
  exit(1);
 }

 if (count1 != sqlda1->sqld)
 {
  printf("count1 (%d) != sqlda1->sqld (%d)\n", count1, sqlda1->sqld);
  exit(1);
 }

 if (count1 != sqlda2->sqld)
 {
  printf("count1 (%d) != sqlda2->sqld (%d)\n", count1, sqlda2->sqld);
  exit(1);
 }

 if (count1 != sqlda3->sqld)
 {
  printf("count1 (%d) != sqlda3->sqld (%d)\n", count1, sqlda3->sqld);
  exit(1);
 }

 for (i = 1; i <= count1; i++)
 {
  exec sql get descriptor desc1 value :i :field_name1 = name;
  exec sql get descriptor desc2 value :i :field_name2 = name;
  printf("%d\n\tfield_name1 '%s'\n\tfield_name2 '%s'\n\t"
   "sqlda1 '%s'\n\tsqlda2 '%s'\n\tsqlda3 '%s'\n",
   i, field_name1, field_name2,
   sqlda1->sqlvar[i-1].sqlname.data,
   sqlda2->sqlvar[i-1].sqlname.data,
   sqlda3->sqlvar[i-1].sqlname.data);
 }

 strcpy(msg, "deallocate");
 exec sql deallocate descriptor desc1;
 exec sql deallocate descriptor desc2;
 free(sqlda1);
 free(sqlda2);
 free(sqlda3);

 exec sql deallocate prepare st_id1;

 /* Test DESCRIBE with a query not producing tuples */

 strcpy(msg, "allocate");
 exec sql allocate descriptor desc1;
 exec sql allocate descriptor desc2;

 strcpy(msg, "prepare");
 exec sql prepare st_id2 FROM :stmt2;

 sqlda1 = sqlda2 = sqlda3 = NULL;

 strcpy(msg, "describe");
 exec sql describe st_id2 into sql descriptor desc1;
 exec sql describe st_id2 using sql descriptor desc2;

 exec sql describe st_id2 into descriptor sqlda1;
 exec sql describe st_id2 using descriptor sqlda2;
 exec sql describe st_id2 into sqlda3;

 if (sqlda1 == NULL || sqlda2 == NULL || sqlda3 == NULL)
  exit(1);

 strcpy(msg, "get descriptor");
 exec sql get descriptor desc1 :count1 = count;
 exec sql get descriptor desc1 :count2 = count;

 if (!( count1 == count2 &&
  count1 == sqlda1->sqld &&
  count1 == sqlda2->sqld &&
  count1 == sqlda3->sqld))
  exit(1);

 for (i = 1; i <= count1; i++)
 {
  exec sql get descriptor desc1 value :i :field_name1 = name;
  exec sql get descriptor desc2 value :i :field_name2 = name;
  printf("%d\n\tfield_name1 '%s'\n\tfield_name2 '%s'\n\t"
   "sqlda1 '%s'\n\tsqlda2 '%s'\n\tsqlda3 '%s'\n",
   i, field_name1, field_name2,
   sqlda1->sqlvar[i-1].sqlname.data,
   sqlda2->sqlvar[i-1].sqlname.data,
   sqlda3->sqlvar[i-1].sqlname.data);
 }

 strcpy(msg, "deallocate");
 exec sql deallocate descriptor desc1;
 exec sql deallocate descriptor desc2;
 free(sqlda1);
 free(sqlda2);
 free(sqlda3);

 exec sql deallocate prepare st_id2;

 /* End test */

 strcpy(msg, "drop");
 exec sql drop table descr_t2;

 strcpy(msg, "commit");
 exec sql commit;

 strcpy(msg, "disconnect");
 exec sql disconnect;

 return 0;
}

[Dauer der Verarbeitung: 0.14 Sekunden, vorverarbeitet 2026-08-08]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002