Received: from shaked.cc.openu.ac.il (shaked.cc.openu.ac.il [147.233.145.65]) by hub.org (8.8.8/8.7.5) with ESMTP id HAA09952 for ; Sun, 5 Apr 1998 07:08:55 -0400 (EDT) Received: from [147.233.55.121] (herutma.tppp.openu.ac.il [147.233.55.121]) by shaked.cc.openu.ac.il (8.8.5/8.8.5) with ESMTP id OAA13414; Sun, 5 Apr 1998 14:05:08 +0300 (IDT) X-Sender: herouth@shaked.cc.openu.ac.il Message-Id: In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Sun, 5 Apr 1998 14:03:39 +0300 To: Tom Good From: Herouth Maoz Subject: Re: [INTERFACES] ecpg - `exec sql delete' failing Cc: PostgreSQL Interfaces List At 0:46 +0300 on 4/4/98, Tom Good wrote: > Hi. Can't fathom why this code precompiles, compiles, links and > seems to execute - but won't delete records. > As always - any assistance greatly appreciated! > Tom > --- pgc code follows --- > > #include > > EXEC SQL BEGIN DECLARE SECTION; > int ClientID; /* client_id */ > char FirstName[16]; /* client_fname */ > char LastName[16]; /* client_lname */ > char NameTag[16]; /* usr buffer */ > char reply; /* usr buffer */ > int delete_num; /* usr buffer */ > EXEC SQL END DECLARE SECTION; [snip] > printf("\t\tRemove this record (y/n): "); > scanf("%s", &reply); > if(reply == 'y') { > printf("\t\tEnter Client ID Number: "); > scanf("%d", &delete_num); > EXEC SQL DELETE FROM central WHERE client_id = delete_num; > } > else printf("Exiting...record not removed.\n"); > exit(0); > } Reminds me of a mistake a friend of mine did in one of his university exercises. The variable reply is declared as char, but you're scanning to it as string, so there is a "\0" which enters somewhere (perhaps the alignment bytes of delete_num, who knows), and causes a garble. Why don't you try to scan it using "%c", not "%s"? Herouth -- Herouth Maoz, B.Sc. Work: herouth@oumail.openu.ac.il Home: herutma@telem.openu.ac.il HOME PAGE: http://homes.openu.ac.il/~herouth/ Internet technical assistant Open University, Telem Project