USE tempdb; GO IF OBJECT_ID('DMLfill', 'P') IS NOT NULL DROP PROC DMLfill GO CREATE PROC DMLfill @StudentCount INT = 100, @GroupCount INT = 10, @ScoreCount INT = 100 AS DELETE FROM Student; DELETE FROM GroupStudent; ;WITH CTE AS( SELECT 1 N UNION ALL SELECT N+1 FROM CTE WHERE N<@GroupCount ) INSERT GroupStudent(Number) SELECT CONCAT('GROUP #', N) FROM CTE OPTION(MAXRECURSION 30000) ;WITH CTE AS( SELECT 1 N UNION ALL SELECT N+1 FROM CTE WHERE N<@StudentCount ) INSERT Student(GroupId, FIO) SELECT GS.id, CONCAT('ФИО|', GS.id, '|', N) FROM CTE JOIN ( SELECT ROW_NUMBER()OVER(ORDER BY id)GN, * FROM GroupStudent ) GS ON GS.GN = (N-1)%@GroupCount + 1 OPTION(MAXRECURSION 30000)