Переменная EXEC SQL DECLARE в файлах заголовков .h, предварительно обработанных Oracle pro * c - PullRequest
2 голосов
/ 27 июня 2011

Я портирую некоторый код C ++ со встроенным SQL на сервер Linux с базой данных Oracle.

Объектами доступа к данным являются классы C ++, предоставляющие .select () .insert () .findByPrimaryKey () и т. Д., Методы длявзаимодействия с базой данных.

Это заголовочный файл testdao.h.

class TestDAO
{
    private:
        EXEC SQL BEGIN DECLARE SECTION;
        int hv_col1;
        int hv_col2;
        .. .. upto 20 host variables ...
        EXEC SQL END DECLARE SECTION;

public:
    testObj* select();
    bool insert(testObj);
    testObj* findByPrimaryKey(primaryKeyObj);
}

Это файл testdao.ecpp

class TestDAO::select()
{
    ... select into hostvariables hv_col1, hv_col2 ..
    ... copy hostvariables data into object ...
}

class TestDAO::insert(testObj)
{
    ... copy data from the testObj into hostvariables ... 
    ... EXEC SQL INSERT using hostvariales ...
}

class TestDAO::findByPrimaryKey(primaryKeyObj)
{
    ... copy primaryKeyObj data into hostvariables ...
    ... EXEC SQL SELECT where primary key .. 
}

Прекомпилятор Oracle pro * C не можетобрабатывать EXEC SQL в заголовочных файлах.Как мне объявить переменные хоста, чтобы мне не приходилось объявлять их повторно в каждом из методов?

Я не могу иметь их в качестве глобальных переменных.

...