PLSQL UPDATE OF加入

时间:2017-08-20 17:53:49

标签: oracle plsql

我正在尝试创建一个PLSQL语句,用来自他们所有生物的所有生物的钱来更新角色库存中的钱

以下是我一直在尝试的代码:

{{1}}

inst_creature表中有一个character_id,用于定义与该生物作战的角色。

我收到了错误 ORA-01422:精确提取返回超过请求的行数。

我一直试图通过谷歌来解决这个问题,但到目前为止还没有任何工作。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

当一个角色杀死多个怪物时会发生什么? ORA-01422,那是什么。 SELECT ... INTO语法填充标量值,即一行。当查询返回多行时,PL / SQL会抛出ORA-01422。

  

"是否有任何解决方案可以使它工作?"

最简单的方法是修复查询,使其返回一行。当你只是为角色的宝库增加资金时,你可以使用聚合:

      SELECT sum(inst_creature.money)
      INTO inv_money
      FROM inst_creature,character
      WHERE inst_creature.character_id = character.ID;

因此,每个角色获得一行,每个角色获得一次更新。