在我之前的查询Update Query之后,我继续重写整个查询,如下所示:
表A通过[PRD_ID, PRD_VER, PY_ID, TPY_ID]
上的一对多关系连接到表B,表C通过[PRD_GTIN_ID]
上的一对一关系连接到表B.我需要将表A中的X,Y,Z列复制到表C中的X,Y,Z
DECLARE CURSOR eachRec IS
SELECT cgl.prd_gtin_id,
tc.PRD_SPL_OR_QTY_MULTIPLE
FROM B cgl,
A tc
WHERE cgl.prd_id = tc.prd_id
AND cgl.prd_ver = tc.prd_ver
AND cgl.py_id = tc.py_id
AND cgl.tpy_id = tc.tpy_id;
BEGIN
FOR EACH_ROW IN eachRec
LOOP
UPDATE C
SET C.PRD_ORDER_QTY_MULTIPLE=EACH_ROW.PRD_ORDER_QTY_MULTIPLE
WHERE C.prd_gtin_id = EACH_ROW.prd_gtin_id;
END LOOP;
END;
除了更新正确匹配之外,查询还会更新不正确的随机行。如果有人能帮我找到我写过的查询的问题?
答案 0 :(得分:1)
您真正需要的是理解密钥保留表和可更新连接视图的概念。
由于这些都是非平凡的主题,并且Oracle在文档中做了很好的工作,我只想指出相关的文档: http://download.oracle.com/docs/cd/E11882_01/server.112/e25494/views001.htm#ADMIN11782
如果您可以阅读并理解这些概念,那么使用单个更新语句执行您想要的操作不应该是一个问题,这将更清晰,更容易理解,并且更快更有效。< / p>
希望有所帮助。