我想调用一个“更新”存储过程,它不一定包含所有列。 可能有更好的方法来处理这个问题.... 正如你所看到的,如果我不传递列参数,它们的值是NULL。然后,使用ISNULL将列设置为新值或现有值。当我更新自己的SQL列时会发生什么? - 或者 - 简化的条件更新?
CREATE PROCEDURE [dbo].[spUpdateTable]
@pPKID bigint = NULL,
@pColumn1 int = NULL,
@pColumn2 int = NULL
AS
BEGIN
SET NOCOUNT ON;
UPDATE
TableName
SET
[Column1] = ISNULL(@pColumn1,[Column1]),
[Column2] = ISNULL(@pColumn2,[Column2])
WHERE
[PKID] = @pPKID
END
我知道在数据库中会发生什么,我的意思是有没有任何性能问题或更好的方法来做到这一点? – Matthew 2010-09-28 19:52:50