我有一个看起来像这样的存储过程:
BEGIN
Update Materials
SET used_last=
(
Select
SUM( Amount*used_last)
FROM Used_Materials,
Materials,
PCNs
WHERE Material_NR=@MatNr
AND Used_Materials.Material_NR=Materials.Material_NR
AND PCNs.Material_NR=@MatNr
)
FROM Materials,
PCNs
WHERE Materials.Material_NR=@MatNr
AND PCNs.Material_NR=@MatNr
END
必须为每个材质(MatNr)调用此过程。是否可以立即对所有人进行此操作?我偶然发现了CURSORs和MAX Case,但我无法理解它。
非常感谢任何帮助。
答案 0 :(得分:1)
JOIN
关键字并限定所有列名称。一个简单的规则:从不在FROM
子句中使用逗号。 始终使用明确的JOIN
语法。
我认为这是您想要的查询:
UPDATE m
SET used_last = (SELECT SUM(Amount) * used_last
FROM Used_Materials um
WHERE um.Material_NR = m.Material_NR
)
FROM Materials m JOIN
PCNs
ON m.Material_NR = PCNs.Material_NR;