Re: [INTERFACES] ecpg - `exec sql delete' failing

From: Herouth Maoz <herouth(at)oumail(dot)openu(dot)ac(dot)il>
To: Tom Good <tomg(at)nrnet(dot)org>
Cc: PostgreSQL Interfaces List <pgsql-interfaces(at)postgreSQL(dot)org>
Subject: Re: [INTERFACES] ecpg - `exec sql delete' failing
Date: 1998-04-05 11:03:39
Message-ID: v04003a06b14d14bde5cd@[147.233.55.121]
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

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 <stdio.h>
>
> 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(at)oumail(dot)openu(dot)ac(dot)il
Home: herutma(at)telem(dot)openu(dot)ac(dot)il
HOME PAGE: http://homes.openu.ac.il/~herouth/
Internet technical assistant Open University, Telem Project

In response to

Browse pgsql-interfaces by date

  From Date Subject
Next Message Tom Good 1998-04-06 12:19:46 Re: [INTERFACES] Re: ecpg - `exec sql delete' failing (fwd)
Previous Message Tom Good 1998-04-04 11:28:36