db.starttransaction;
with query1 do
close;
Sql.clear;
sql.add('delete from it_fit_code '+
' where fit_code = :fit_code '+
' and fit_class = :fit_class ');
parambyname('fit_code' ).asstring := edit1.text;
parambyname('fit_class').asstring := edit2.text;
prepare;
execsql;
close;
Sql.clear;
sql.add('delete from it_fit_in '+
' where fit_code = :fit_code '+
' and fit_class = :fit_class ');
parambyname('fit_code' ).asstring := edit1.text;
parambyname('fit_class').asstring := edit2.text;
prepare;
execsql;
end;
db.commit;
이런형태의 소스입니다...
4개의 Form에 같은 형태가 들어갑니다...
그런데 어떤 Form에서는 첫 Sql에 대해선 삭제가 되고 또 어떤곳에선
두번째 Sql문만 실행이 되어 삭제가 됩니다...
SQL 모니터로 확인해보니...두 문장 모두 parameter가 잘 들어가요...
길이...자료...데이터형태 모두...
그런데 roweffected가 0가 될때가 있습니다...
군데 분명 row는 존재 하거든요...
왜 그럴까요? 그리고 대처 방법이?
P.S : Parameter로 하지 않고 sql을 String형태로 만들어 넣으면 되요...아래와 같이...
sql.add('delete from ir_fit_code '+
' where fit_code = '''+edit1.text+''' '+
' and fit_class = '''+edit2.text+''' ');
참고로 델파이 5.0과 오라클8을 사용하고 있습니다.
구럼 고수님들의 답변을 학수고대하며...이만...
그러니까 Parameter로 값을 넘기면 결과가 나오지 않는다는 말이지요?
그런 비슷한 일이 저도 있었거든요.
아직 원인은 모르고 있지만... 워낙 허접이라...하하.
그거 피하려면 Parameter Name에 공백을 없애야 합니다. 제 경우..
SQL.Add('Delete From it_fit_code '); // 여기는 공백이 있어도 상관없어요.
SQL.Add('Where fit_code =:fit_code'); // 여기서 Parameter 주변에 공백이 없어야 됩니다.
SQL.Add(' and fit_class =:fit_class');
아무튼 Parameter로 값을 넘길경우 Parameter Name 주변에 공백이 있으니까 인수가
제대로 동작이 않되요.
어떤경우는 아예 Parameter가 정의되지 않았다고도 나오던데요.
공백을 없애고 한번 해보세요.
위대한 단군혼이 살아있는 나라.... 대한민국.
권경미 wrote:
> db.starttransaction;
>
> with query1 do
> close;
> Sql.clear;
> sql.add('delete from it_fit_code '+
> ' where fit_code = :fit_code '+
> ' and fit_class = :fit_class ');
>
> parambyname('fit_code' ).asstring := edit1.text;
> parambyname('fit_class').asstring := edit2.text;
>
> prepare;
> execsql;
>
> close;
> Sql.clear;
> sql.add('delete from it_fit_in '+
> ' where fit_code = :fit_code '+
> ' and fit_class = :fit_class ');
>
> parambyname('fit_code' ).asstring := edit1.text;
> parambyname('fit_class').asstring := edit2.text;
>
> prepare;
> execsql;
>
> end;
>
> db.commit;
>
> 이런형태의 소스입니다...
>
> 4개의 Form에 같은 형태가 들어갑니다...
>
> 그런데 어떤 Form에서는 첫 Sql에 대해선 삭제가 되고 또 어떤곳에선
>
> 두번째 Sql문만 실행이 되어 삭제가 됩니다...
>
> SQL 모니터로 확인해보니...두 문장 모두 parameter가 잘 들어가요...
>
> 길이...자료...데이터형태 모두...
>
> 그런데 roweffected가 0가 될때가 있습니다...
>
> 군데 분명 row는 존재 하거든요...
>
> 왜 그럴까요? 그리고 대처 방법이?
>
> P.S : Parameter로 하지 않고 sql을 String형태로 만들어 넣으면 되요...아래와 같이...
> sql.add('delete from ir_fit_code '+
> ' where fit_code = '''+edit1.text+''' '+
> ' and fit_class = '''+edit2.text+''' ');
>
> 참고로 델파이 5.0과 오라클8을 사용하고 있습니다.
>
> 구럼 고수님들의 답변을 학수고대하며...이만...
>