ОК, я взломал решение.
Но это, конечно, некрасиво, все же это работает (Сорта).
РЕДАКТИРОВАТЬ, этот работает в dbForge-MySQL и Delphi
Сначала я создал хранимую функцию «ранжирование» в MySQL, которая хранит значение и / или смещение в @rank.
CREATE DEFINER = 'root'@'localhost'
FUNCTION MyDatabase.Ranking(NewRank INT, Addition INT)
RETURNS int(11)
BEGIN
IF NOT(NewRank IS NULL) THEN SET @rank:= NewRank; END IF;
IF NOT(Addition IS NULL) THEN SET @rank:= @rank + Addition; END IF;
RETURN @rank;
END
Затем я изменил ZQuery1, чтобы он читал что-то вроде:
select ranking(null,1) as rank
,groep.*
from groep
join (select ranking(0,null)) r
Это работает, и полный сложный код в Delphi также работает. (-_-')
Очередной триумф над злыми машинами
Итак, подведем итоги.
@varname является постоянным в хранимой процедуре (конечно, внутри одного соединения).
Обмен @varname между оператором select и хранимой процедурой работает в dbForge, но завершается неудачей в Delphi.