First I created this operator:
create operator GetNext(var AID :Integer) : System.Integer
begin
AID:= AID+1;
result:=AID;
end ;
and then I used it:
var id := 0;
select SomeTable add {GetNext(id) rowid};
It is nice, but it would be better if there were a way to do this without having to create an operator myself (it should already include one that does this)
Now If I want to do pagination, all I have to do is write:
var id := 0;
select SomeTable add {GetNext(id) rowid} where rowid between 2 and 5;
That will return rows between 2 and 5 from the “SomeTable” table.
Now one of the most interesting feaures about Dataphor, are relvars (relational variables), that make it possible to do this:
var SomeComplexQuery := SomeTable where …...
var id := 0;
select SomeComplexQuery add {GetNext(id) rowid} where rowid between 2 and 5;
That way, pagination can be added to a query of arbitrary complexity with minimum effort.