샬롬~
아래와 같이 integer형으로 결과를 리턴하는 함수가 있습니다.
try
:
:
Result := ADOQuery.ExecSQL;
except
Result := 0;
end;
물론 아래처럼 고치면 되겠지만..현재 운영중인 시스템이 전혀..ㅡㅡ;
그렇게 하자면 작업이 너무 커집니다..ㅡㅡ;
예외처리부분 몽땅 다시 고칠라믄..ㅠㅠ
try
:
:
Result := ADOQuery.ExecSQL;
except
on e : exception do
begin
showmessage(e.message);
//어쩌구 저쩌구 등등등..
end
end;
소스 여기저기에 산재한 위와같은 코드에서 리턴값이 0이면 에러로 간주하고
에러메시지를 뿌리도록 되어있는 코드가 있습니다..
그런데..어떤 테이블에 트리거를 하나 생성했습니다.
트리거에선 트리거가 정상적으로 마치면 리턴값이 0입니다..
여기서 문제가 발생하더군여..ㅡㅡ;
update 트리거인데..update가 없을땐 함수에서 리턴값이 update된 로우수를
리턴했었는데..트리거를 만들고 나서 0이 리턴이 되므로
에러가 없음에도 불구하고 응용프로그램에서는 에러가 났다구 자꾸..ㅡㅡ;
어찌하면 좋을까요? 소스 건드리기 싫어서 트리거로 작업을 했더니..
이런 문제가..ㅡㅡ;
db는 ms_sql7.0입니다.. 트리거를 정상적으로 마치고 리턴코드를
원래값을 그대로 리턴해 줄 수 있으면 좋겠는데요.. ^^;
@@error나 @@rowcount 값이 ExecSQL의 리턴값인거 같은데..
이걸 강제로 다시 바꿔서 리턴할수 있는건지??
잘 안되네여..ㅡㅡ;
장황한 설명 끝까지 읽어 주셔서 고맙습니다..
그럼 답변을..^^;;
왜 클라이언트에서 실행하는지 이해가 되질 않습니다.