Проблема в чтении значения и сохранении в переменной хоста? - PullRequest
0 голосов
/ 16 августа 2011

Моя программа читает записи из файла и для каждой записи в файле выбирает значение из БД.Я объявил переменную хоста в моей программе Pro * C.Я использовал эту переменную хоста в одном из моих запросов select внутри программы.Память переменной не очищается для каждой записи.

Например, для первой записи запрос sql извлекает "ABCD".Затем для второй записи запрос выбирает «EFGHIJKL».Для третьей записи фактическим значением в БД является «GHI», но память не очищается и печатается «GHIHIJKL».

Как разрешить это?

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Вот в основном то, что вы должны делать. Есть также встроенная настройка Pro * C, которая должна делать это автоматически, но у меня были некоторые проблемы с этим, поэтому я предпочитаю это решение, которое быстрое и простое.

VARCHAR var[50+1];      /* Add 1 char more than the size of the queried column of the database */

EXEC SQL SELECT thing INTO :var WHERE /* whatever */

if(sqlca.sqlcode == 0) 
  var.arr[var.len] = 0;      /* Add the \0 char at the end of you var.
0 голосов
/ 16 августа 2011

Вы также должны работать с длиной, предоставляемой вызовом базы данных, предоставляя вам возможность работать с данными, содержащими байты NUL.

Или вы завершаете строку вручную с заданной длиной. Это работает только со строками "NUL-less".

...