आप मर्ज का उपयोग कर सकते हैं प्रश्न टेक्स्ट में पुरानी और नई आईडी के बीच मिलान प्राप्त करने के लिए आउटपुट क्लॉज के साथ स्टेटमेंट। यह इस प्रश्न में वर्णित है source.id और target.id के बीच मैपिंग प्राप्त करने के लिए merge..output का उपयोग करना ।
आपके मामले में कोड कुछ इस तरह दिखेगा। कोड का परीक्षण नहीं किया गया है, इसलिए इसमें टाइपो की कोई भी संख्या हो सकती है लेकिन यह दिखाता है कि आप क्या कर सकते हैं।
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