Возникла у меня проблема, так что может кто сталкивался или вариант предложит получше...
В Delphi7 в DBGrid по 2-ому клику выполняется такой код:
if n3.Checked=true then
begin
try
idcont:=DMsuddel.QMain.FieldValues['ID_ARBITRAG'];
except
on E:EVariantTypeCastError do
begin
ShowMessage('Нет данных для обнавления.'#10#10'Добавьте данные');
Exit;
end;
end;
valcont:=DMsuddel.QMain.FieldValues['CONTROL'];
i:=MessageDlg('Вы уверенны?',mtConfirmation,[mbYes,mbNo],0);
if i=6 then
begin
FMain.Enabled:=false;
with DMsuddel.SPAddDir do
begin
try
ProcedureName:='UPD_ARBCONT';
Parameters.Add;
Parameters.Add;
Parameters[0].Name:='id_cont';
Parameters[0].DataType:=ftInteger;
Parameters[0].Direction:=pdInput;
Parameters[0].Precision
Parameters[0].Value:=idcont;
Parameters[1].Name:='val_con';
Parameters[1].DataType:=ftBoolean;
Parameters[1].Direction:=pdInput;
Parameters[1].Value:=valcont;
Prepared:=True;
ExecProc;
Parameters[1].Destroy;
Parameters[0].Destroy;
... и т. д.
В результате чего в ХП передается значение ID поля и его текущее значение (True или False).
Хранимка в Oracle 9i (SQLPlus ее выполняет на все 100% с требуемым результом) обновляет данные в таблице в зависимости от полученного значения, т. е. Если получено True меняет на False и наоборот. Текст ХП:
(id_cont in admin.arbitrag.id_arbitrag%type,
val_con in boolean)
is
rec_upd admin.arbitrag%rowtype;
begin
select * into rec_upd from admin.arbitrag
where id_arbitrag=id_cont
for update nowait;
if (val_con = true) then
begin
rec_upd.control:='0';
end;
else
begin
rec_upd.control:='-1';
end;
end if;
Соль в том, что при запуске в Delphi ХП рисует ошибку такого содержания:
"Неопознаная ошибка"...
гром не грянет... админ не забекапиться...