반응형
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
반응형
'source' 카테고리의 다른 글
| SQL Server - 트랜잭션 롤백 오류 발생? (0) | 2023.04.07 |
|---|---|
| SQL Server의 숨겨진 기능 (0) | 2023.04.07 |
| SQL에서 월의 첫 번째 날을 선택하려면 어떻게 해야 합니까? (0) | 2023.04.07 |
| 에서 무효 또는 예기치 않은 파라미터에 대해 발생하는 예외는 무엇입니까?인터넷? (0) | 2023.04.07 |
| 활성 SQL Server 연결을 확인하려면 어떻게 해야 합니까? (0) | 2023.04.07 |