在Sql Server中更新列的存储过程

时间:2009-12-06 16:30:10

标签: sql-server stored-procedures

我需要更新具有多个值的列。查询如下所示。

Update table1 set column1 = (
  select value from table2 where table1.column0 = table2.coulmn
)

是否存在上述要求的通用存储过程?

3 个答案:

答案 0 :(得分:3)

如果没有以字符串形式创建语句并使用“execute”语句,我不知道。通常“执行”是不受欢迎的,因为它是一个潜在的注入攻击点。

答案 1 :(得分:1)

为什么要更新一个包含另一个表中容易获得的信息的表?似乎您只是保证每次执行更新,插入或删除camsnav表时都必须运行此查询。否则你将如何让它们保持同步?

此外,如果您不能保证子查询只返回一行,则使用特定于SQL Server的专有更新格式可能更安全:

UPDATE f SET nav = n.nav
FROM camsfolio AS f
INNER JOIN camsnav AS n
ON f.schcode = n.schcode;

答案 2 :(得分:0)

SQL Server不会对此类事物使用“通用存储过程”。您可以使用适当的参数化UPDATE语句构建自己的SP。