Изменений глобально, как мне кажется нужно немного:
1. Бросать исключения при ошибке вместо goto.
2. Сделать курсор совместимым с интерфейсом однонаправленного итератора из stl. 3. Элементами этого итератора сделать экземпляры структуры сгенерённой под конкретный select.

Код был бы примерно такой:
[code]
  EXEC SQL DECLARE c CURSOR FOR
    SELECT * FROM table1;
  EXEC SQL OPEN c AS :cur, :end;
  for (; cur != end; ++cur)
    cout<<cur->fld1<<' '<<cur->fld2<<endl;
[/code]

Мне кажется очень бы удобно получилось. :)

--
Александр Замараев

Ответить