gpt4 book ai didi

sql - 是否可以更新存储过程中的变量字段?

转载 作者:行者123 更新时间:2023-12-05 00:09:12 25 4
gpt4 key购买 nike

我有一个更新变量列的简单查询。此查询稍后被 string.Formatted 并传递给 SqlCommand (c#)(TableId 是 SomeTable 中的一列):

"UPDATE SomeTable set {0}=@Value where TableId=@TableId"

我需要将此查询转换为存储过程。有可能吗?

最佳答案

它只能通过存储过程中的动态 SQL 来完成(正如 Brad 已经回答的那样,但当然你会使用 QUOTENAME(@columnName) 来正确防止 SQL 注入(inject),并使用 sysname参数类型)。如果你走那条路,我建议你先阅读 The Curse and Blessings of Dynamic SQL .

更新:

我不得不发布代码,因为 Brad 的代码错误太多。

create procedure myCustomUpdate
@columnName sysname,
@value sql_variant,
@id int
AS
declare @sql NVARCHAR(max);
set @sql = N'UPDATE SomeTable SET ' + QUOTENAME(@columnName)
+ N' = @value WHERE TableId = @id';
exec sp_executesql @sql, N'@value sql_variant, @id int', @value, @id;

关于sql - 是否可以更新存储过程中的变量字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3990929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com