我正在尝试将我们在项目中使用的一些 SQL 代码转换为使用参数。插入工作正常:
with SQLDataSet do begin
Close;
SQL.Text := 'INSERT INTO testtable (keyname, waarde) VALUES (:keyname,:waarde)';
Prepare;
for i := 1 to 10000 do begin
ParamByName('waarde').AsInteger := i;
ParamByName('keyname').AsString := 'Testa'+IntToStr(i);
ExecSql;
end;
end;
工作又好又快。
但是,我不能让它与选择语句一起使用。起初,以下似乎有效:
with SQLDataSet do begin
SQL.Clear;
SQL.Text := 'SELECT :waarde = waarde FROM testtable WHERE keyname = :keyname';
Prepare;
for i := 1 to 10000 do begin
ParamByName('keyname').AsString := 'Testa'+IntToStr(i);
ExecSQL;
k[i] := ParamByName('waarde').AsInteger;
Close;
end;
end;
但是 k[i] 的值只是被 0 填充。我是否需要继续选择老式方式、发出查询、打开和遍历结果集,或者当您有一个只有 1 行的查询可以直接选择参数值时,是否有办法?