【发布时间】:2016-02-04 11:38:06
【问题描述】:
使用下面的存储过程,我可以选择表的可变部分,给定每条记录的行索引。我尝试创建另一个类似于MulTselect 的存储过程,只是这次表值参数将有另一列用于MulTUpdate 存储过程的新值。
[RowIndex] int, [NewVal] [varchar] (4000) NOT NULL
问题是,鉴于记录 - Rowindex 和“NewValue”,是否可以像下面的选择过程中那样对多条记录执行 UPDATE?
--sproc signature
CREATE Proc [dbo].[MulTSELECTViaRowIndexSpTVP]
@SelectedTableName varchar (50),
@SelectedAction varchar(10),
@TestMulTSELECTViaRowIndexTVPar dbo.TestMulTSELECTViaRowIndexTVType READONLY
SET @CmdStr = 'SELECT * FROM ' + @SelectedTableName + '
WHERE RowIndex in (SELECT RowIndex from @TestMulTSELECTViaRowIndexTVPar);'
EXEC sp_executesql @CmdStr,N' @TestMulTSELECTViaRowIndexTVPar dbo.TestMulTSELECTViaRowIndexTVType READONLY',
@TestMulTSELECTViaRowIndexTVPar= @TestMulTSELECTViaRowIndexTVPar
【问题讨论】:
-
通过添加
@SelectedColumnName参数 -
类似
SET @CmdStr = 'UPDATE ' + @SelectedTableName + ' SET ' + @SelectedColName + 'WHERE RowIndex in ...
标签: c# sql-server stored-procedures table-valued-parameters