← Back to team overview

sslug-teknik team mailing list archive

Postgres og Embedded Sql (ecpg)

 

Jeg er begyndt at interessere mig lidt for PostgresSql, da den jo følger
med  RedHat-linux. Jeg er dog lidt skuffet over  Embedded Sql,
fordi der ikke findes select-loop. Jeg er vant til i Ingres at kunne
skrive kode efter flg. mønster:

exec sql select ename, sal, eno
         into :ename, :sal, :eno
         from employee
         order by eno;
  exec sql begin;
    browse data;
    if error condition then
      exec sql endselect;
    end if;
   exec sql end;

Sekvensen    "exec sql begin;   Progamkode;  exec sql end;"  præsenterer
en række af gangen fra den foranstående select. 
I Postgres skal  INTO variablerne erklæres som arrays, der er store nok
til at rumme alle resultater fra selectet; men det er jo en
håbløs opgave. Man kan godt skrive en "exec sql begin;   ....  exec
sqlend;" sekvens, men det får man ikke noget ud af . Ved at checke
sqlca.sqlcode får man blot at vide, at der er  en transaction i gang.
Endvidere ser det ud til at "exec sql end" trigger
en commit, hvilket betyder at man er afskåret fra at se antallet af
resultat-rækker registret i sqlca.sqlerrd[2], idet en commit nulstiller
denne variabel.
Mon der i Postgres Enbedded Sql findes en løsning på dette problem?
Documentationen for Ecpg er desværre så kortfattet at den efter min
mening er næsten værdiløs, ihvert fald for alle, der ikke ved noget om
embedded sql i forvejen.

Med venlig hilsen
Jørgen Heesche


Follow ups