아래의 코드는 중복을 체크하는 함순데요...
USERINFO 테이블에 동일한 값이 존재하면 wUpdate를 존재하지 않으면 wInsert의 결과가
나와야 합니다.
ORACLE의 sqlplus에선 SQL이 정상적으로 값이 반환 되는데, 델파이의 파리미트로
값을 전달하면 동일한 값이 있는데도 찾지 못하고 wInsert의 결과가 나타납니다.
MS-SQL에선 문제없이 동작하는것 같은데, 잘못된 점과 해결방법을 알려주세요...
type
TSaveMode = (wInsert, wUpdate, wNone);
//저장모드 확인.
function TfrmUInfo.SaveMode(AValue: String): TSaveMode;
var
Query : TQuery;
begin
Query := TQuery.Create(Self);
Query.DatabaseName := DM.DB.DatabaseName;
try
with Query do
begin
SQL.Clear;
SQL.Add('SELECT COUNT(*) FROM USERINFO WHERE USRID = :USRIDZ');
ParamByName('USRIDZ').AsString := AValue;
Open;
if Fields[0].AsInteger then
Result := wUpdate
else
Result := wInsert;
end;
finally
Query.Free;
end;
end;
따라서 if Fields[0].AsInteger > 0 then 으로 변경하셔야 할것 같습니다.