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如果你处于这种状况,你会选择做什么?我的意思是你认为哪一个是正确的方式? –
这是一个意见问题。就个人而言,我更喜欢将标量结果保存在输出参数中,并为真正的关系数据保留结果集。显然,你的同行有相反的观点。在这个例子中,程序不会产生其他的结果集,这不会有太大的区别。 –