C# 如何合并以下4个SP使其成为一个或可能是2个?
如果您只需要一个过程:C# 如何合并以下4个SP使其成为一个或可能是2个?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,如果您只需要一个过程: ALTER PROC [Schema1].[SetDefaultBAdd] ( @UserAddDetailID bigint, @IsB bit ) AS BEGIN UPDATE Schema1.UserAddDetails SET IsDefault = 1 WHERE UserAddDetailID=@UserAddDetailID AND IsB=@IsB END -------------------------------
ALTER PROC [Schema1].[SetDefaultBAdd]
(
@UserAddDetailID bigint,
@IsB bit
)
AS
BEGIN
UPDATE Schema1.UserAddDetails
SET IsDefault = 1 WHERE UserAddDetailID=@UserAddDetailID AND IsB=@IsB
END
--------------------------------------------------------------------------
ALTER PROC [Schema1].[SetNotDefaultBAdd]
(
@UserID bigint,
@IsB bit
)
AS
BEGIN
UPDATE Schema1.UserAddDetails SET IsDefault = 0 WHERE UserID=@UserID AND IsB=@IsB
END
--------------------------------------------------------------------------
ALTER PROC [Schema1].[SetDefaultShAdd]
(
@UserAddDetailID bigint,
@IsSh bit
)
AS
BEGIN
UPDATE Schema1.UserAddDetails
SET IsDefault = 1 WHERE UserAddDetailID=@UserAddDetailID AND IsSh=@IsSh
END
--------------------------------------------------------------------------
ALTER PROC [Schema1].[SetNotDefaultShAdd]
(
@UserID bigint,
@IsSh bit
)
AS
BEGIN
UPDATE Schema1.UserAddDetails SET IsDefault = 0 WHERE UserID=@UserID AND IsSh=@IsSh
END
我不确定这是否是我想要的。我的意思是调用SP时IsDefault的值没有作为参数传递。它是根据其他参数值在SP中设置的。u hv WRITED set IsDefault=@IsDefault…IsDefault不会从代码传递到SP@Serenity-我已经用你的额外要求更新了答案。你呢考虑到您使用ASP.NET,并且您所做的一切都是基于值b更新表a,您真的需要存储过程吗?为什么不使用一个经典的ADO.NET调用,您就可以在代码中动态创建查询了。
CREATE PROCEDURE [Schema1].[SuperDuperProcedure]
(
@UserID bigint = NULL,
@UserAddDetailID bigint = NULL,
@IsB bit,
@IsSh bit
)
AS
BEGIN
UPDATE
Schema1.UserAddDetails
SET
IsDefault = 0
WHERE
UserID = @UserID
AND
(IsB = @IsB OR IsSh = @IsSh)
UPDATE
Schema1.UserAddDetails
SET
IsDefault = 1
WHERE
UserAddDetailID = @UserAddDetailID
AND
(IsB = @IsB OR IsSh = @IsSh)
END