对数据库中的表进行批量的更新
现在我有一个存储过程 传递完参数后 先查找 如果有就更新,如果没有就插入现在的问题是我如何知道哪些字段更新过,哪些字段没被改过下面是存储过程
ALTER PROCEDURE [dbo].[updateByExcle] @Rbh char(4),
@Sbh char(2),
@Xm varchar(10),
@Mm varchar(6),
@Lz char(1),
@Zzbh char(4),
@Sssbh char(2)
AS
BEGIN transaction
if(exists (select * from dbo.Rs_ry where Rbh=@Rbh))
BEGIN
UPDATE dbo.Rs_ry
SET Sbh=@Sbh,Xm=@Xm,Mm=@Mm,LZ=@Lz,Zzbh=@Zzbh,Sssbh=@Sssbh
where Rbh = @Rbh
if @@ERROR <> 0 goto errorEnd
END
ELSE
BEGIN
INSERT INTO dbo.Rs_ry
VALUES (@Rbh,@Sbh,@Xm,@Mm,@Lz,@Zzbh,@Sssbh)
select * from dbo.Rs_ry where Rbh = @Rbh
if @@ERROR <> 0 goto errorEnd
END
if @@trancount > 0 commit transaction
errorEnd:
if @@error >0 rollback transaction
现在我有一个存储过程 传递完参数后 先查找 如果有就更新,如果没有就插入现在的问题是我如何知道哪些字段更新过,哪些字段没被改过下面是存储过程
ALTER PROCEDURE [dbo].[updateByExcle] @Rbh char(4),
@Sbh char(2),
@Xm varchar(10),
@Mm varchar(6),
@Lz char(1),
@Zzbh char(4),
@Sssbh char(2)
AS
BEGIN transaction
if(exists (select * from dbo.Rs_ry where Rbh=@Rbh))
BEGIN
UPDATE dbo.Rs_ry
SET Sbh=@Sbh,Xm=@Xm,Mm=@Mm,LZ=@Lz,Zzbh=@Zzbh,Sssbh=@Sssbh
where Rbh = @Rbh
if @@ERROR <> 0 goto errorEnd
END
ELSE
BEGIN
INSERT INTO dbo.Rs_ry
VALUES (@Rbh,@Sbh,@Xm,@Mm,@Lz,@Zzbh,@Sssbh)
select * from dbo.Rs_ry where Rbh = @Rbh
if @@ERROR <> 0 goto errorEnd
END
if @@trancount > 0 commit transaction
errorEnd:
if @@error >0 rollback transaction
if(exists (select * from dbo.Rs_ry where Rbh=@Rbh))
BEGIN
UPDATE dbo.Rs_ry
SET Sbh=@Sbh,Xm=@Xm,Mm=@Mm,LZ=@Lz,Zzbh=@Zzbh,Sssbh=@Sssbh
where Rbh = @Rbh
if @@ERROR <> 0 goto errorEnd
END
ELSE
BEGIN
INSERT INTO dbo.Rs_ry
VALUES (@Rbh,@Sbh,@Xm,@Mm,@Lz,@Zzbh,@Sssbh)
select * from dbo.Rs_ry where Rbh = @Rbh
if @@ERROR <> 0 goto errorEnd
END