Один довольно простой метод:
select a.a, b.b, concat('text', row_number() over (order by a, b))
from (values (1), (2)) a(a) cross join
(values (1), (2), (3)) b(b);
Или, если вы действительно хотите объявить переменные:
declare @a int = 2;
declare @b int = 3;
with n as (
select 1 as n union all
select n + 1
from n
where n < @a or n < @b
)
select na.n as a, nb.n as b, concat('text', row_number() over (order by na.n, nb.n))
from n na join
n nb
on na.n <= @a and nb.n <= @b;
Здесь - это db <> скрипка.