Oracle 使用Join更新的PLSQL
我正在尝试创建一个PLSQL语句,用他们所战斗过的所有生物的钱来更新角色清单中的钱 以下是我一直在尝试的代码:Oracle 使用Join更新的PLSQL,oracle,plsql,Oracle,Plsql,我正在尝试创建一个PLSQL语句,用他们所战斗过的所有生物的钱来更新角色清单中的钱 以下是我一直在尝试的代码: DECLARE inv_money character.money%TYPE; CURSOR updmoney IS SELECT * FROM character WHERE id IN (SELECT character_id FROM inst_creature)
DECLARE
inv_money character.money%TYPE;
CURSOR updmoney IS
SELECT *
FROM character
WHERE id IN (SELECT character_id FROM inst_creature)
FOR UPDATE OF money;
BEGIN
FOR v_character IN updmoney LOOP
SELECT inst_creature.money
INTO inv_money
FROM inst_creature,character
WHERE inst_creature.character_id = character.ID;
UPDATE character
SET money = money+inv_money
WHERE CURRENT OF updmoney;
END LOOP;
COMMIT;
END;
inst_生物表中有一个角色id,用于定义与该生物战斗的角色
我发现了错误
ORA-01422:精确获取返回的行数超过请求的行数
我一直试图通过使用谷歌来解决这个问题,但到目前为止还没有任何效果。有什么想法吗?当一个角色杀死多个怪物时会发生什么?ORA-01422,就是这样。选择。。。INTO语法填充一个标量值,即一行。当查询返回多行时,PL/SQL抛出ORA-01422 “有什么办法可以解决这个问题吗?” 最简单的方法是修复查询,使其返回一行。当您只是向角色的宝藏中添加金钱时,您可以使用聚合:
SELECT sum(inst_creature.money)
INTO inv_money
FROM inst_creature,character
WHERE inst_creature.character_id = character.ID;
因此,每个角色有一行,每个角色有一次更新。当一个角色杀死多个怪物时会发生什么?ORA-01422,就是这样。选择。。。INTO语法填充一个标量值,即一行。当查询返回多行时,PL/SQL抛出ORA-01422 “有什么办法可以解决这个问题吗?” 最简单的方法是修复查询,使其返回一行。当您只是向角色的宝藏中添加金钱时,您可以使用聚合:
SELECT sum(inst_creature.money)
INTO inv_money
FROM inst_creature,character
WHERE inst_creature.character_id = character.ID;
因此,每个角色有一行,每个角色有一次更新。当一个角色杀死多个怪物时会发生什么?ORA-01422,就是这样。@APC啊,我明白了。有什么办法可以解决这个问题吗?当一个角色杀死多个怪物时会发生什么?ORA-01422,就是这样。@APC啊,我明白了。有什么办法可以解决这个问题吗?但是要小心-,但是要小心-。