#include #include #include void fillin(); void nothing(); void print(); FILE *usage(); main(argc, argv) int argc; char *argv[]; { FILE *fp; EXEC SQL BEGIN DECLARE SECTION; /*struct emp{char name[20]; char status[30];};*/ extern char *plsqlb(); int i; struct emp *pb; char *uid; char *name; char *status; char *source; long summa = 0; char buffer[1024]; EXEC SQL END DECLARE SECTION; if(!(fp = usage(argc, argv, &uid))) { fprintf(stderr, "usage: dplsqltab login passwd inserts\n"); return 256; } EXEC SQL WHENEVER SQLERROR GOTO hiba; EXEC SQL CONNECT :uid; Exec Sql Whenever Sqlerror Do print(); Exec Sql Execute Begin Execute Immediate 'Drop Table infrnd'; End; End-Exec; EXEC SQL Execute Begin Execute Immediate 'Create Table infrnd' || '(name Varchar2(20), status Varchar2(30))'; End; End-Exec; /* feltoltjuk az infrnd tablat a megadott file-bo */ Exec Sql Whenever Sqlerror Do print(); while(fgets(buffer, 1024, fp)) { fillin(&name, &status, buffer); Exec Sql Execute Begin Execute Immediate 'Insert Into infrnd Values(:name, :status)' Using :name, :status; End; End-Exec; } Exec Sql Commit; Exec Sql Whenever Sqlerror Goto hiba; EXEC SQL WHENEVER SQLERROR Do print(); for(i=1; i<13; i++) { (void)printf("%d:%s\n", i, plsqlb(i)); } EXEC SQL Execute Begin Execute Immediate 'SELECT COUNT(*) FROM infrnd' Into :summa; End; End-Exec; printf("summa=%ld\n", summa); return 0; hiba: printf("%.*s\n", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc); return 1; } FILE *usage(argc, argv, login) int argc; char *argv[]; char **login; { FILE *fp; static char connect[40]; if(argc < 3) { return (FILE*)NULL; } (void)sprintf(connect, "%s/%s", argv[1], argv[2]); *login = connect; if(!(fp = fopen(argv[3], "r"))) { fprintf(stderr, "Open failure on file '%s'\n", argv[3]); } return fp; } void nothing() { } void print() { fprintf(stderr, "%s\n", /*sqlca.sqlerrm.sqlerrml,*/ sqlca.sqlerrm.sqlerrmc); } void fillin(name, status, buffer) char **name, **status, *buffer; { /* Keressuk a name/status szeparatort ':' */ *name = strtok(buffer, ":"); *status = strtok((char *)NULL, ":"); }