Thread: [INTERFACES] Use ecpg
Hello All, I just began to use postgresql-6.4.2 and ecpg (version: 2.4.4). I try t precompile simple code ( I took it from a book) and get this error message: prog:17: parse error Perhaps this is stupid error, but I have no idea what to do, because I don't have good manual on Embedded SQL. Can I find somewhere documentation on C-Embedded SQL? Thanks, in advance, for any help. -Margarita Barvinok File prog: /* *********************************************************** */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define FAILURE 1 #define SUCCESS 0 void printError(void); /* define the communication region */ EXEC SQL INCLUDE sqlca; int main() { /* set error handler to bail out if we can't connect */ EXEC SQL WHENEVER SQLERROR { /* LINE 17 */ printError(); return FAILURE; }; /* Connect to the database */ EXEC SQL CONNECT USER "dba" IDENTIFIED BY "sql"; printf("test"); EXEC SQL DISCONNECT; return SUCCESS; } /* * printError() * function to print a description of any SQL errors */ void printError() { static char buffer[200]; printf("SQL error -- %s\n", buffer, sqlerror_message( &sqlca, buffer, sizeof(buffer))); } /* ******************************************************************* */
On Thu, 28 Jan 1999, Margarita Barvinok wrote: > > Hello All, > > I just began to use postgresql-6.4.2 and ecpg (version: 2.4.4). > I try t precompile simple > code ( I took it from a book) and get this error message: > prog:17: parse error > Perhaps this is stupid error, but I have no idea what to do, because I > don't have good manual on Embedded SQL. Can I find somewhere > documentation on C-Embedded SQL? I'm kinda in the same boat. I've been using the Oracle Pro*C precompiler manual. I don't have the URL here at work but I found an online copy using www.google.com > /* set error handler to bail out if we can't connect */ > EXEC SQL WHENEVER SQLERROR > { /* LINE 17 */ > printError(); > return FAILURE; > }; > I don't think this will work. I think you need to define an action for the ecpg parser. I asked one of the authors about the sqlerror option and here's a snippet from the e-mail I got this morning <snip> > interested in the actions to whenever sqlerror. I tried to look in the > preproc.y file but I have no idea what I'm looking at. I saw a DO and > a CALL but can't find out what they mean. The following actions are defined: continue sqlprint stop goto label go to label do break do function(parameter) call function(parameter) </snip> For me, the best documentation has been the test progs bundled in the postgresql distro. From memory the location is postgresql-6.4.2/src/interfaces/ecpg/test or something like that. There are two test programs and a preformace program. Hope this helps. I you'd be so kind, mail me and let me know how things work out, I'm working on error handling tonight. ->->->->->->->->->->->->->->->->->->---<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-< James Thompson 138 Cardwell Hall Manhattan, Ks 66506 785-532-0561 Kansas State University Department of Mathematics ->->->->->->->->->->->->->->->->->->---<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<
On Thu, Jan 28, 1999 at 10:36:30AM -0600, James Thompson wrote: > On Thu, 28 Jan 1999, Margarita Barvinok wrote: > > > > > Hello All, > > > > I just began to use postgresql-6.4.2 and ecpg (version: 2.4.4). > > I try t precompile simple Strange. For some reason I've never seen the original mail. Seems that's just another of those typical usa.net mail losses. Could someone please forward it to me. Thanks. > > /* set error handler to bail out if we can't connect */ > > EXEC SQL WHENEVER SQLERROR > > { /* LINE 17 */ > > printError(); > > return FAILURE; > > }; Sorry, but that's incorrect syntax. What you want to do is: func() { printError(); return FAILURE; } EXEC SQL WHENEVER SQLERROR DO func(); BTW there is a function defined in libecpg named sqlerror() that prints a clear text error message. > ... > > For me, the best documentation has been the test progs bundled in the > postgresql distro. From memory the location is > > postgresql-6.4.2/src/interfaces/ecpg/test Yup. Michael -- Michael Meskes | Go SF 49ers! Th.-Heuss-Str. 61, D-41812 Erkelenz | Go Rhein Fire! Tel.: (+49) 2431/72651 | Use Debian GNU/Linux! Email: Michael.Meskes@gmx.net | Use PostgreSQL!
On Thu, Jan 28, 1999 at 10:16:00AM -0500, Margarita Barvinok wrote: > > Hello All, > > I just began to use postgresql-6.4.2 and ecpg (version: 2.4.4). Oops, the original mail cam later than the reply. So I got it now. I will answer later. Michael -- Michael Meskes | Go SF 49ers! Th.-Heuss-Str. 61, D-41812 Erkelenz | Go Rhein Fire! Tel.: (+49) 2431/72651 | Use Debian GNU/Linux! Email: Michael.Meskes@gmx.net | Use PostgreSQL!
Thank you, Michael. There were syntax mistakes. Now I found sample programs and know correct syntax. -Margarita On Fri, 29 Jan 1999, Michael Meskes wrote: > On Thu, Jan 28, 1999 at 10:16:00AM -0500, Margarita Barvinok wrote: > > > > Hello All, > > > > I just began to use postgresql-6.4.2 and ecpg (version: 2.4.4). > > Oops, the original mail cam later than the reply. So I got it now. I will > answer later. > > Michael > -- > Michael Meskes | Go SF 49ers! > Th.-Heuss-Str. 61, D-41812 Erkelenz | Go Rhein Fire! > Tel.: (+49) 2431/72651 | Use Debian GNU/Linux! > Email: Michael.Meskes@gmx.net | Use PostgreSQL! >