OUT 매개 변수를 사용하여 테이블에 삽입 된 기본 키를 가져 오는 프로 시저를 만들었습니다.OUT 매개 변수를 프로 시저에 전달하는 것이 좋지 않습니까?
CREATE PROCEDURE spProcedureName (
@Name VARCHAR(20)
,@Place VARCHAR(20)
,@InsertedId INT = 0 OUT
)
AS
BEGIN
INSERT INTO TableName (
NAME
,Place
)
VALUES (
@Name
,@Place
);
SET @InsertedId = SCOPE_IDENTITY();
END;
이 절차는 내 C# 코드에서 사용됩니다. OUT 매개 변수에서도 값을 얻습니다.
그러나 이것은 피어 리뷰되었으며 OUT 매개 변수를 사용하지 않도록 요청했습니다. 그는 다음과 같이 절차를 변경하라고했습니다.
CREATE PROCEDURE spProcedureName (
@Name VARCHAR(20)
,@Place VARCHAR(20)
)
AS
BEGIN
DECLARE @InsertedId INT = 0;
INSERT INTO TableName (
NAME
,Place
)
VALUES (
@Name
,@Place
);
SET @InsertedId = SCOPE_IDENTITY();
SELECT @InsertedId;
END;
OUT 매개 변수를 사용하는 것이 나쁜 이유를 알고 싶습니다. 저에게 알려주세요. 나는 수색했지만 아무것도 얻을 수 없었다.
추신 : 게시물의 절차는 단지 예제 일뿐입니다. 생성 된 ID는 다른 테이블에서 실제 프로 시저의 외래 키로 사용됩니다.
미리 감사드립니다.
차이가 있다고 생각하지 않습니다. –
@ ZoharPeled 상황에 있다면 당신은 무엇을 선택하겠습니까? 나는 어느 쪽이 옳은 길이라고 생각하니? –
의견의 문제입니다. 개인적으로 필자는 매개 변수에 스칼라 결과를 유지하고 진정한 관계형 데이터를 위해 결과 집합을 예약하는 것을 선호합니다. 외관상으로는, 당신의 동료는 반대 의견이있다. 프로 시저가 다른 결과 세트를 생성하지 않는이 예제에서는 많은 차이를 만들지 않을 것입니다. –