dbx에서 blob param으로 sql 명령을 어떻게 실행할 수 있습니까?
문제
Blob 필드가있는 TSQLDATASET이 있습니다. 공급자의 이전 UPDATERECORD 이벤트 에서이 Blob 필드의 데이터를 가져와 업데이트 명령을 실행해야합니다.
Cmd := TSQLQuery.Create(nil);
try
Cmd.SQLConnection := SQLConnection;
Cmd.CommandText := 'UPDATE MYTABLE SET IMAGE = :PIMAGE WHERE ID = :PID';
Cmd.Params.CreateParam(ftBlob, 'PIMAGE ', ptInput).Value := DeltaDS.FieldByName('IMAGE').NewValue; //blob field
Cmd.Params.CreateParam(ftString, 'PID', ptInput).Value := DeltaDS.FieldByName('ID').NewValue;
Cmd.ExecSQL;
finally
Cmd.Free;
end;
실행할 때 '매개 변수 Pimage에 대한 값이 없습니다.
내가 무엇을 놓치고 있습니까?
해결책
내 자신의 질문에 대답하면 올바른 방법은 다음과 같습니다.
const
SQL = 'UPDATE MYTABLE SET IMAGE = :PIMAGE WHERE ID = :PID;';
var
Params: TParams;
begin
Params := TParams.Create(nil);
try
Params.CreateParam(ftBlob, 'PIMAGE', ptInput).AsBlob := DeltaDS.FieldByName('IMAGE').NewValue;
Params.CreateParam(ftString, 'PID', ptInput).Value := DeltaDS.FieldByName('ID').NewValue;
SQLConnection.Execute(SQL, Params);
finally
Params.Free;
end;
end;
다른 팁
다른 드라이버 (예 : ODBC)로 테스트를 시도해 보셨습니까? 오류가 코드에 있지 않을 수 있습니다. 이 접근법 (데이터 제공 업체/운전자 변경)은 내 것이 아닌 혼란스러운 문제를 도와주었습니다.
제휴하지 않습니다 StackOverflow