我需要更新具有多个值的列。查询如下所示。
Update table1 set column1 = (
select value from table2 where table1.column0 = table2.coulmn
)
是否存在上述要求的通用存储过程?
答案 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。