2
我使用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參數。請告訴我。我搜索,但沒有得到任何東西。
P.S:該文章中的程序只是一個示例。生成的ID在其他表中用作實際過程中的外鍵。
在此先感謝。
我不認爲應該有區別。 –
@ZoharPeled如果你處於這種狀況,你會選擇做什麼?我的意思是你認爲哪一個是正確的方式? –
這是一個意見問題。就個人而言,我更喜歡將標量結果保存在輸出參數中,併爲真正的關係數據保留結果集。顯然,你的同行有相反的觀點。在這個例子中,程序不會產生其他的結果集,這不會有太大的區別。 –