我试图只选择 TADOQuery 中的前N个项目,但是当我激活查询时它给了我和错误。似乎找到了top参数就好了,但是执行的时候没能替换掉。如果我不使用“Top N”限制 SQL 语句,则代码可以正常工作。
这是代码的基本思想。
const SQL_STR = 'SELECT TOP :cnt name from dSomeTable where done = FALSE';
var
dbCon : TADOConnection;
toSolveQry : TADOQuery;
getCnt : TParameter;
names : TField;
threadCnt : Integer;
begin
threadCnt := 3;
dbCon := TADOConnection.Create(nil);
...
dbCon.Open();
toSolveQry := TADOQuery.Create(nil);
toSolveQry.Connection := dbCon;
toSolveQry.SQL.Add(SQL_STR);
toSolveQry.ParamCheck := True;
getCnt := toSolveQry.Parameters.ParamByName('cnt');
getCnt.Value := threadCnt;
toSolveQry.Active := true; //Error here
names := toSolveQry.FieldByName('name');
...
end