Cześć, najpierw przedstawię po krótce sytuację programu:
Jest serwer i kilku klientów.
Na serwerze jest główna baza danych(Firebird), a także działający w tle mały programik, nazwijmy go ORG.
Każdy z klientów ma u siebie awaryjną bazę danych(struktura taka sama, jak w głównej).
Całość działa tak:
Klient wysyła jakieś zapytanie do głównej bazy i jest ono wykonane. Zapytanie to potem przechwytuje ORG i rozsyła do baz awaryjnych wszystkich klientów.
To działa ok.
Problem pojawia się przy procedurach składowanych.
Gdy jakiś klient odpala procedurę składowaną, wysyła do ORG pewien łańcuch. Znajdują się w nim informacje takie jak: nazwa procedury składowanej, nazwa 1 parametru, typ pierwszego parametru(DataType), wartość 1 parametru, nazwa 2 parametru....itd
Następnie ORG wydobywa z tego łańcucha wszystkie informacje i pakuje je do StringList, a następnie ładuje je do IBStoredProc w taki sposób:
StoredProc.StoredProcName:=sl.strings[0];
sl.Delete(0);
while sl.Count>0 do
begin
param:=TParam.Create(nil);
param.Name:=sl.Strings[0];
param.Value:=Variant(sl.strings[2]);
param.DataType:=StrToFieldType(sl.Strings[1]);
storedProc.Params.AddParam(param);
for i:=1 to 3 do sl.Delete(0);
end;
Patrzyłem i wszystko się ładuje do tego SP tak, jak powinno. StrToFieldType to po prostu moja funkcja, która zamienia stringa np: 'ftLargeInt' na wartość typu FieldType - ftLargeInt
Oczywiście StoredProc jest połączone z bazą awaryjną klienta(na której procedura składowana jest).
Dostaję jednak błąd:
Błąd przy wykonywaniu procedury składowanej: Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 1, column 44
(zaznaczam, że jak procedura jest wykonywana przez program, gdzie StoredProc nie jest tworzone dynamicznie i sam sobie pobiera parametry, to jest ok).
O co może mu chodzić?