উত্তর:
আপনার একটি টেবিল পরিবর্তনশীল দরকার এবং এটি সাধারণ হতে পারে।
declare @ID table (ID int)
insert into MyTable2(ID)
output inserted.ID into @ID
values (1)
output
?
DECLARE @InsertedIDResults TABLE (ID int); INSERT INTO MyTable (Name, Age) OUTPUT INSERTED.ID INTO @InsertedIDResults VALUES('My Name', 30); DECLARE @InsertedID int = (SELECT TOP 1 ID FROM @InsertedIDResults);
এক বছরেরও বেশি সময় পরে ... আপনার যা দরকার তা যদি কোনও টেবিলের স্বয়ংক্রিয় উত্পন্ন আইডি পান তবে আপনি ঠিক করতে পারেন
SELECT @ReportOptionId = SCOPE_IDENTITY()
অন্যথায়, মনে হচ্ছে আপনি কোনও টেবিল ব্যবহার করে আটকে আছেন।
পরে কিন্তু তবুও উল্লেখযোগ্য বিষয় হ'ল আপনি একটি আপডেটের এসইটি ধারাটিতে বা একটি নির্বাচনের ক্ষেত্রেও আউটপুট মানগুলিতে ভেরিয়েবল ব্যবহার করতে পারেন;
DECLARE @val1 int;
DECLARE @val2 int;
UPDATE [dbo].[PortalCounters_TEST]
SET @val1 = NextNum, @val2 = NextNum = NextNum + 1
WHERE [Condition] = 'unique value'
SELECT @val1, @val2
উপরের উদাহরণে @ ভাল 1 এর পূর্বে মান রয়েছে এবং @ ভাল 2 এর পরের মান রয়েছে যদিও আমি সন্দেহ করি যে ট্রিগার থেকে নেওয়া কোনও পরিবর্তন ভাল 2-তে হবে না তাই আপনাকে সেই ক্ষেত্রে আউটপুট সারণির সাথে যেতে হবে। সরলতম কেস ছাড়া অন্য কোনও কিছুর জন্য, আমি মনে করি আউটপুট টেবিলটিও আপনার কোডে আরও পঠনযোগ্য হবে।
আপনি যদি কলামকে কমা-বিচ্ছিন্ন তালিকায় রূপান্তর করতে চান তবে এটির পক্ষে খুব কার্যকর একটি জায়গা;
DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list
SET @val2 = NextNum = NextNum + 1
।