Sql server 2008 如何通过sql中的多个列名更新sql中的值
我希望向多个列添加值Sql server 2008 如何通过sql中的多个列名更新sql中的值,sql-server-2008,Sql Server 2008,我希望向多个列添加值 ALTER PROCEDURE DynamicInsertQuery @ColumnName VARCHAR(MAX), @RiD VARCHAR(50) AS BEGIN DECLARE @DynamicQuery NVARCHAR(MAX) SET @DynamicQuery = 'UPDATE tbl_route_info SET ('+ @ColumnName +') = (1) WHERE RouteId=('+@RiD+')'
ALTER PROCEDURE DynamicInsertQuery
@ColumnName VARCHAR(MAX),
@RiD VARCHAR(50)
AS
BEGIN
DECLARE @DynamicQuery NVARCHAR(MAX)
SET @DynamicQuery = 'UPDATE tbl_route_info SET ('+ @ColumnName +') = (1) WHERE RouteId=('+@RiD+')'
EXEC(@DynamicQuery)
END
这是我试过的代码
我像这样运行这个过程
DynamicInsertQuery '(1,2)','10'
我怀疑你想要这样的东西:
ALTER PROCEDURE DynamicInsertQuery (
@ColumnName VARCHAR(MAX),
@RiD VARCHAR(50)
) AS
BEGIN
DECLARE @DynamicQuery NVARCHAR(MAX);
SET @DynamicQuery = 'update tbl_route_into set @ColumnName = 1 where RouteId = @RiD';
SET @DynamicQuery = REPLACE(@DynamicQuery, '@ColumnName', @ColumnName);
EXEC sp_executesql @DynamicQuery, N'@RiD VARCHAR(50)', @RiD = @RiD;
END;
注:
- 您的版本中括号太多
- 如果您正在学习使用动态SQL,请学习
——以及如何使用它传递参数sp_executesql
- 不能将事物(列、表等)的名称作为参数传递,因此必须将其直接放入字符串中
- 您可以将值传递到字符串中,例如
@RiD
ALTER PROCEDURE DynamicInsertQuery (
@ColumnName VARCHAR(MAX),
@RiD VARCHAR(50)
) AS
BEGIN
DECLARE @DynamicQuery NVARCHAR(MAX);
SET @DynamicQuery = 'update tbl_route_into set @ColumnName = 1 where RouteId = @RiD';
SET @DynamicQuery = REPLACE(@DynamicQuery, '@ColumnName', @ColumnName);
EXEC sp_executesql @DynamicQuery, N'@RiD VARCHAR(50)', @RiD = @RiD;
END;
注:
- 您的版本中括号太多
- 如果您正在学习使用动态SQL,请学习
——以及如何使用它传递参数sp_executesql
- 不能将事物(列、表等)的名称作为参数传递,因此必须将其直接放入字符串中
- 您可以将值传递到字符串中,例如
@RiD