Oracle 如何在Update语句中循环?
我想在UPDATE语句中循环。有可能吗?它在“rec”变量中给了我一个错误。如果没有,你能告诉我怎么做吗。这是我的代码,我尝试在其中进行选择,以便用所有变量更新所有行Oracle 如何在Update语句中循环?,oracle,plsql,Oracle,Plsql,我想在UPDATE语句中循环。有可能吗?它在“rec”变量中给了我一个错误。如果没有,你能告诉我怎么做吗。这是我的代码,我尝试在其中进行选择,以便用所有变量更新所有行 BEGIN UPDATE DATMCCN0 SET E_NOME = ( FOR rec IN(SELECT IID FROM DATMCCN0) LOOP SE
BEGIN
UPDATE DATMCCN0
SET E_NOME = (
FOR rec IN(SELECT IID FROM DATMCCN0)
LOOP
SELECT I_NOME FROM DAT_CCNCONFIG0 INNER
JOIN DATMCCN0 ON DAT_CCNCONFIG0.I_NOME = DATMCCN0.CAPLIC
where DATMCCN0.IID = rec.IID)
END LOOP;
END;
你可能正在尝试做一件事
此语句可以解决您的问题。使用
MERGE
语句:
MERGE INTO DATMCCN0 dst
USING DAT_CCNCONFIG0 src
ON (
src.IID = dst.IID
AND src.I_NOME = dst.CAPLIC
)
WHEN MATCHED THEN
UPDATE SET E_NOME = src.I_NOME;
或者,根据您的逻辑:
MERGE INTO DATMCCN0 dst
USING (
SELECT b.IID,
/* MAX(I_NOME) AS */ I_NOME
FROM DAT_CCNCONFIG0 a
INNER JOIN DATMCCN0 b
ON a.I_NOME = b.CAPLIC
-- GROUP BY b.IID
) src
ON ( src.IID = dst.IID)
WHEN MATCHED THEN
UPDATE SET E_NOME = src.I_NOME;
你不能在里面打圈。根本不需要循环来更新行。但如果必须这样做,您可以在循环中循环和更新。例如,开始。。。环使现代化端环;在这里查找更新的示例。。。选择..:还可以阅读Oracle文档。在这里和网络上有大量的示例可供使用select或update INDER loop进行更新。可能有重复的示例,但没有人理解我的问题可能会显示输入数据的示例,以及您希望从此更新中获得的结果的示例。目前还不清楚您到底想要得到什么,您在问题中给出的陈述完全是错误的,无法编译。很难猜测看到错误的代码而不工作的代码有什么好处。@jose与其说“你们都不理解我的问题”,不如改进你们的问题来帮助我们(他们对你们的问题并不了解)通过提供一个包含您试图实现的目标的英文描述(而不是代码)的示例数据(如DDL/DML语句)和您的预期结果来理解。我们是志愿者,粗鲁无益于让我们自愿花时间帮助你而不是其他人。
MERGE INTO DATMCCN0 dst
USING (
SELECT b.IID,
/* MAX(I_NOME) AS */ I_NOME
FROM DAT_CCNCONFIG0 a
INNER JOIN DATMCCN0 b
ON a.I_NOME = b.CAPLIC
-- GROUP BY b.IID
) src
ON ( src.IID = dst.IID)
WHEN MATCHED THEN
UPDATE SET E_NOME = src.I_NOME;