source

SQL Server 출력 절을 스칼라 변수로 변환

itover 2023. 4. 7. 21:13
반응형

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

정답.

사용할 수 있습니다.@@IDENTITY마지막으로 삽입된 ID를 가져옵니다.

DECLARE @someInt int
INSERT INTO MyTable2(AIntColumn)
VALUES(12)
SET @someInt = @@IDENTITY;

테이블에 해당 변수로 설정하는 프라이머리 키가 있다고 가정합니다.

스키마 예시

CREATE TABLE MyTable2(
    [ID] [INT] IDENTITY(1,1),
    [aIntColumn] [INT]
)
CREATE TABLE MyTable3(
    [ID] [INT] IDENTITY(1,1),
    [newInt] [INT],
    [FK_int] [INT]
)

그런 다음 스크립트의 다음 부분에서 사용할 수 있습니다.

DECLARE @someInt INT;
INSERT INTO MyTable2(AIntColumn)
VALUES(12)
SET @someInt = @@IDENTITY;

--do something else
DECLARE @someInt2 INT;
INSERT INTO MyTable3(newInt, FK_int)
VALUES(101, @someInt)
SET @someInt2 = @@IDENTITY;

SELECT @someInt AS 'First Inserted ID ',  @someInt2 AS 'Second inserted ID';

언급URL : https://stackoverflow.com/questions/5558582/sql-server-output-clause-into-a-scalar-variable

반응형