답변:
테이블 변수가 필요하며 이것이 간단 할 수 있습니다.
declare @ID table (ID int)
insert into MyTable2(ID)
output inserted.ID into @ID
values (1)
output
? 절을 사용하는 대신 values 절에서 사용되는 것을 쉽게 잡을 수 있습니다 .
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);
1 년이 지난 후 ... 자동으로 생성 된 테이블의 ID를 얻는 것이 필요한 경우
SELECT @ReportOptionId = SCOPE_IDENTITY()
그렇지 않으면 테이블 사용에 갇힌 것처럼 보입니다.
나중에도 언급 할 가치가있는 것은 변수를 사용하여 UPDATE의 SET 절 또는 SELECT 필드에서 값을 출력 할 수도 있다는 것입니다.
DECLARE @val1 int;
DECLARE @val2 int;
UPDATE [dbo].[PortalCounters_TEST]
SET @val1 = NextNum, @val2 = NextNum = NextNum + 1
WHERE [Condition] = 'unique value'
SELECT @val1, @val2
위의 예제에서 @ val1에는 이전 값이 있고 @ val2에는 이후 값이 있습니다. 트리거의 변경 사항이 val2에 없을 것으로 생각되므로 해당 경우 출력 테이블을 사용해야합니다. 가장 간단한 경우를 제외하고는 출력 테이블이 코드에서 더 읽기 쉽습니다.
열을 쉼표로 구분 된 목록으로 바꾸려면이 방법이 매우 유용합니다.
DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list
SET @val2 = NextNum = NextNum + 1
.