我想遍历一个表,并将一个列值插入到另一个表中。我怎么能在没有光标的情况下执行此操作。
CREATE TABLE Status (Id, StatusCode, Description) AS
SELECT 11, 'CO', 'Completed' FROM DUAL UNION ALL
SELECT 22, 'CA', 'Carried' FROM DUAL UNION ALL
SELECT 33, 'AA', 'Carried' FROM DUAL;
另一个表表2
CREATE TABLE MainTable (Id, StatusTableId, MainTableData)
在Maintable
中,我需要获取三行数据:
| ID|斯塔斯塔布莱德|预订ID|可维护数据|
| --|--|--|--|
| 1 | 11 | 1 |安社会|
| 2 | 22 | 1 |达泽|
| 3 | 33 | 1 |阿达什德|
在这里,我想遍历status
表,并将id
(这里是11,22,33)插入到新表中。我可以在没有光标的情况下这样做吗?
1条答案
按热度按时间y3bcpkx11#
假设您已经创建了表格并插入了已知数据:
然后,您需要为
maintable
中的每一行引用status
中的id
;但是,这两个表之间没有任何共同之处,因此您必须生成自己的方法来关联这两个表。第一件事你需要做的是找出这两个表是如何链接的(为什么
maintable
中的id
为1
的行想要拥有11
的状态?),然后,当你理解了为什么id
应该有statusid
的原因,然后你可以实现这个逻辑来更新值。然而,由于逻辑并不明显,我们只能提供可能的猜测,给予预期的输出(但可能只是巧合)。例如,您可以根据
id
列的顺序对Status
中的行进行编号,然后将其与maintable
的id
列相关联,并使用MERGE
语句来更新表:那么
maintable
包含:| ID|法定|维护数据|
| --|--|--|
| 1 | 11 |安社会|
| 2 | 22 |达泽|
| 3 | 33 |阿达什德|
还有许多其他方法可以将这两个表关联起来;例如
mainTable.Id
和Status.Id
的第一个字符:不过,回答你的问题:
我可以在没有光标的情况下这样做吗?
正如上文所述,你可以。
fiddle