gpt4 book ai didi

java - 使用 SP 克隆数据库记录的最佳方法

转载 作者:行者123 更新时间:2023-12-01 16:12:28 25 4
gpt4 key购买 nike

我必须编写代码来克隆一个数据库条目以及其他表中的关联数据,并为其分配一个新的 ID。简化我有一个主表,其中包含 ID 的键和子表(SUB1),其中包含 ID 的 FK 以及 MAIN 中每个条目的多个记录。
我想将 MAIN 中特定 ID 的数据复制到新记录,将 ID 更新为新值,以允许现有条目及时保留为快照,而新条目成为正在进行的新工作。

我希望使用存储过程,并且想知道是否可以/建议使用一个调用其他 SP 来执行工作的高级 SP?

例如


CREATE PROCEDURE CopyNewVersion (IN oldID)
...
BEGIN
--copy main record details for passed in oldID,
--return the new ID thats been allocated
CALL CopyNewMainRecord(IN oldID, OUT newID )
--copy all SUB1 records for oldID to newID
CALL CopyNewSub1Records(IN oldID, IN newID)
--Declare a cursor to return the details in MAIN for newID
END

我看到的 CopyNewSub1Records 类似于


CREATE PROCEDURE CopyNewSub1Records (IN oldID, IN NewID)
...
BEGIN
--select all records in SUB1 with FK oldID
--sp opens a cursor for return
CALL GetSUB1Records(oldID)
for each returned record in the cursor resultset
--insert into SUB1 values(newID, other data for this row,....)
CALL CreateSUB1Record(row details)
END

所以我的问题是,是否可以将 CopyNewMainRecord 中的 newID 的 OUT 与 IN 中一样放到 CopyNewSub1Records 中,并且我可以在调用插入 SP 时使用来自 CopyNewSub1Records 中的 Get SP 的多行结果集进行循环吗?

我目前正在等待 DB 管理员授予在我们的 DB2 环境上创建 SP 的权限,所以这就是我询问而不是尝试这样做的原因。

最佳答案

我对 DB2 不太熟悉,但我认为直接插入比尝试跨范围使用游标要好得多。

将复制主存储过程的输出参数作为其他存储过程的输入对我来说非常有意义。

作为如何创建 CopyNewSub1Records 的示例,我将执行以下操作:(请原谅任何语法问题...就像我说的,我不使用 DB2 - 你如何知道列中的参数?)

CREATE PROCEDURE CopyNewSub1Records (IN oldID, IN NewID)
BEGIN
INSERT INTO Sub1
(
ID,
SubID,
Col1,
Col2
)
SELECT
NewID,
SubID,
Col1,
Col2
FROM
Sub1
WHERE
ID = oldID
END

关于java - 使用 SP 克隆数据库记录的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/535135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com