【发布时间】:2016-12-21 10:27:24
【问题描述】:
我正在尝试创建一个存储过程,它允许我在同一个表上复制一些特定的元组,但具有不同的值。我已经有一个存储过程,允许我创建一个包含所有字段的 SOCIETE 表的元组:
FUNCTION createPerson(P_ID_SOCIETE_PERE SOCIETE.ID_SOCIETE_PERE%TYPE
, P_SOURCE_SOCIETE_PERE SOCIETE.SOURCE_SOCIETE_PERE%TYPE
,......)
现在我必须用它来复制同一张桌子上的人,只改变一个字段,例如满足这个条件的“field3 = 'N'”:
select s.ID_SOCIETE , s.SOURCE_SOCIETE
, s.RAISON_SOCIALE
from FACTURE f, SOCIETE s, partenaire p
where s.ID_SOCIETE = f.SOC_ID and s.SOURCE_SOCIETE = f.SOC_SOURCE
and p.ID_SOCIETE = f.SOC_ID
group by s.SOURCE_SOCIETE , s.SOURCE_SOCIETE
, s.RAISON_SOCIALE ;
为此,有人告诉我使用 Oracle PL/SQL 游标。有人有一个简单的例子吗? 如果我想我需要复制所有大于 490 的 ID,在将其重新复制到同一个表之前将 SOURCE_SOCIETE 更改为“B”而不是“A”,我怎么能用游标来做呢?
【问题讨论】:
-
请发布一些示例数据和所需的结果以澄清您的问题
-
你不能只选择需要相同的列并对需要更改的列进行硬编码并将其提供给插入吗?
-
问题是有很多真正的元组数据,我被告知我需要使用 Oracle Cursor 使用存储过程...
-
这也很好。提出查询,使用
BULK COLLECTBULK COLLECT以批量的形式定义游标和处理游标输出 -
@GurwinderSingh 感谢您的评论,但我正在尝试做一些不同的事情,我正在尝试获取我进入函数参数的所有字段,所以它可以直接插入并自动生成 ID,例如:FETCH CURSOR INTO exec myProcedure(.." here"...)
标签: database oracle plsql cursor