【问题标题】:ORACLE - UPDATE using INSERT seq inside FORALLORACLE - 在 FORALL 中使用 INSERT seq 进行更新
【发布时间】:2018-05-03 10:19:50
【问题描述】:

我有一个 ORACLE 数据库。 我正在尝试使用 FORALL 遍历一个数组,并在该 FORALL 内插入一个带有 TABLE.NEXTVAL 的表,然后用新的 TABLE.CURVAL 更新另一个表的外键,但我知道这是不可能的。

我该如何实现它?

FORALL I IN 1 ..5
insert into tbl
    values (tbl_seq.NEXTVAL)
update foo set tbl_fk = tbl_seq.CURVAL where foo.id=I

谢谢

【问题讨论】:

  • 您的INSERT 本身将无法正常工作,因为无法在FORALL 内部使用没有批量绑定的dml 语句

标签: database oracle


【解决方案1】:

@Dvir,你不能这样做,因为这里只有第一个 INSERT 语句是 FORALL 的一部分。因此,您只能从 CURRVAL 获取序列的最后一个值。我建议您使用 FOR 循环而不是 FORALL。

【讨论】:

  • 是的,我知道因为这个原因它不起作用。我试着做 BEGIN - END 但它没有用,所以我只是粘贴它以获得一个大致的想法。
  • 如果您可以为您的问题提供特定块的完整代码,那么我可以帮助您,将您的代码块放在您面临问题的地方。
猜你喜欢
  • 2021-11-25
  • 1970-01-01
  • 2016-06-13
  • 2017-04-14
  • 2010-10-19
  • 2011-07-07
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多