我有一个包含20多列的大型表格,我只需更新4列,其余部分保持不变。
有没有办法用存储过程实现这一点而不必传递所有列的值?我正在寻找一些说明不要更改此列并保持其内容的内容。
我的存储过程看起来像这样(col1
是由系统设置的自动递增ID):
CREATE PROCEDURE [dbo].[MySP]
@col1 int,
@col2 nvarchar(20),
@col9 nvarchar(20),
@col10 nvarchar(100)
AS
BEGIN
SET NOCOUNT ON;
UPDATE MyTable
SET col2 = @col2,
col9 = @col9,
col10 = @col10
WHERE col1 = @col1
END
感谢您对此提供任何帮助,Tim。
答案 0 :(得分:2)
或者,如果每次都有四个不同的列,那么你需要这样的东西..
CREATE PROCEDURE [dbo].[MySP]
@col1 int = null,
@col2 nvarchar(20) = null,
@col3 nvarchar(20) = null,
@col4 nvarchar(20) = null,
.
.
@col20 nvarchar(100) = null
AS
BEGIN
SET NOCOUNT ON;
UPDATE MyTable
SET col2 = CASE WHEN @col2 IS NULL THEN col2 ELSE @col2 END
,col3 = CASE WHEN @col3 IS NULL THEN col3 ELSE @col3 END
,col4 = CASE WHEN @col4 IS NULL THEN col4 ELSE @col4 END
,.......
,col20 = CASE WHEN @col20 IS NULL THEN col20 ELSE @col20 END
WHERE col1 = @col1
END