Есть баг, который не получается пока отловить. Данные внутри программы перепроверены - всё ок. Баг либо в процедуре БД, либо при передаче параметров из программы в процедуру БД или обратно. Процедура явно работает, тк возвращает названия полей таблицы, но результат работы - пуст, строк нет.
Пользуюсь IBExpert, можно в нём как-то посмотреть запросы/ответы к/из процедурам БД из рабочей программы? Как вообще можно узнать какие точно данные получила БД?
=====================
Попутно напишу как выглядит запрос в БД, может будут корректировки:
Код:
1 2 3 4 5 6 7 8 | procedure TfZapros . Zapros(ProcedureName,ProcedureList: string );
begin
With dsZapros do begin
close;
SQLs . SelectSQL . Text:= 'SELECT * FROM ' +ProcedureName+ ' (:LIST)' ;
Params[ 0 ].Value:=ProcedureList;
open;
end ;
|
Код в БД по разделению списка выглядит так:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | begin
while (i <= char_length(lst)) do begin
if (substring(lst from i for 1 ) = ',' ) then begin
if (i > j) then
id = trim(leading from substring(lst from j for i - j));
else
id = null;
if (id is not null) then suspend;
j = i+ 1 ;
end
i = i+ 1 ;
end
if (i > j) then
id = trim(leading from substring(lst from j for i - j));
else
id = null;
if (id is not null) then suspend;
end
|
Приводить саму процедуру выборки не буду, тк в ней без таблиц и понимания программы разобраться невозможно.