Hi JM!
One from many ways solving of this problem is:
1) In Delphi
Query.SQL.Clear;
Query.SQL.Add('execute procedure MyInsertIntoTable(:code, :libelle) );
Query.ParamByName('code').AsInteger := 0;
Query.ParamByName('libelle').AsString := 'toto';
Query.Open;
if (Query.RecordCount <> 1) then begin
raise Exception.Create('somebody problem');
end;
if (trim(Query.Fields[0].AsString) = 'ERROR') then
raise Exception.Create('Record not inserted');
end;
InsertedSerialNumber := StrToInt(trim(Query.Fields[0].AsString))
...
2) In SPL
create procedure MyInsertIntoTable (code integer, libelle char(100))
returning char(11);define esql integer;
define eisam integer;
define eMyErr char(11);
begin
on exception set esql, eisam, eMyErr
return eMyErr;
end exception;
insert into NameTable values (code, libelle); if dbinfo('sqlca.sqlerrd2')<>1 then
raise exception -746, 0, 'ERROR';
end if;
return dbinfo('sqlca.sqlerrd1');
end;
end procedure;
I hope that I helped to you.
Dmitry A. Yepifanov
pif@belpsb.minsk.by