Можете да използвате обединяване израз с изходната клауза, за да получите съвпадение между стария и новия идентификатор във questionText. Това е описано в този въпрос Използване на merge..output за получаване на съпоставяне между source.id и target.id .
Във вашия случай кодът ще изглежда така. Кодът не е тестван, така че може да има произволен брой правописни грешки, но показва какво можете да направите.
create procedure CopyQuestion
@idtocopy int
as
declare @QuestionID int
insert into question
select Name
from question
where ID = @idtocopy
select @QuestionID = scope_identity()
declare @IDs table (NewQID int, OldQID int)
merge questionText as T
using (select ID, @QuestionID as QuestionID, Field
from questionText
where QuestionID = @idtocopy) as S
on 0=1
when not matched then
insert (QuestionID, Field) values (QuestionID, Field)
output inserted.ID, S.ID into @IDs;
insert into options
select
I.NewQID,
O.Field
from options O
inner join @IDs as I
on O.QuestionTextID = I.OldQID