[sql-server] 스칼라 변수에 대한 SQL Server 출력 절

이를 수행하는 “간단한”방법이 있습니까, 아니면 “OUTPUT … INTO”구문을 사용하여 테이블 변수를 전달해야합니까?

DECLARE @someInt int

INSERT INTO MyTable2(AIntColumn)
OUTPUT @SomeInt = Inserted.AIntColumn
VALUES(12)



답변

테이블 변수가 필요하며 이것이 간단 할 수 있습니다.

declare @ID table (ID int)

insert into MyTable2(ID)
output inserted.ID into @ID
values (1)


답변

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


답변