Q&A

  • 오라클 stored procedure 사용에 관하여..도대체 어떤 문제인지
안녕하세요...

디비는 오라클이구...삽입,삭제,수정 세개의 프로시저를 만들었는데...

삽입은 잘 대는데요...

삭제와 수정만 하려고 하면...이상한 에러가 납니다..



project project2.exe raised exception class EAccessviolation with message

'Access violation at address 036FDFE4C in module 'ORA805.dll' read of

address 00000000' process stopped..........

모 이런 에러가 나는데....뭔가 치명적인 에러 같은데...

오라클 때문인건지...아님 storedproc 컴포넌트의 문제인지..모르겠네요...



database1.StartTransaction ;

with storedproc1 do

begin

//active := true;



if prepared = true then

prepared := false;



prepared := true;

{params.ParamByName('bun').asinteger := bun;

params.ParamByName('s_name').asstring := s_name;

params.ParamByName('phone').asstring := phone;

params.ParamByName('bir').asstring := bir;

params.ParamByName('mail').asstring := mail;

}

params.ParamByName('bun').value := bun;

params.ParamByName('s_name').value := s_name;

params.ParamByName('phone').value := phone;

params.ParamByName('bir').value := bir;

params.ParamByName('mail').value := mail;



try

execproc;

database1.commit;

except

showmessage('error');

database1.rollback;

exit;

end;//try end

end; //proc

showmessage('삽입 OK');---이건 insert 인데 잘 대구요





--문제의 delete----



database1.StartTransaction ;

with storedproc1 do

begin

params.Clear ;

storedprocname := 'delete_data';

if prepared = true then

prepared := false;



prepared := true;

//params[0].AsInteger := bun;

//params.ParamByName('bun').asinteger := strtoint(edit1.text);

params.Clear ;

//Create.ParamByName('bun').asinteger := strtoint(edit1.text);

//params.ParamByName ('bun').value := strtoint(edit1.text);

Params.CreateParam(ftinteger,'bun',ptinput).asinteger := strtoint(edit1.text);



try

execproc;

database1.Commit ;

except

showmessage('error');

database1.rollback;

exit;

end;



end;

showmessage('삭제 OK');

이건데요...코팅이 잘못될수도 있겠지만...

아무래도 저 에러는 코딩 때문에 나는 에러가 아닌 듯 해서요...

고수님덜 도와주세요









0  COMMENTS