如何在 PL/SQL 中创建两个表的记录类型?

Posted

技术标签:

【中文标题】如何在 PL/SQL 中创建两个表的记录类型?【英文标题】:How to create record type of two tables in PL/SQL? 【发布时间】:2016-11-14 04:05:30 【问题描述】:

我有两个表 A,B,有很多列和一个光标

CURSOR Cur  
IS 
select A.*, B.* FROM A,B

我想将游标提取到存储两个表的行类型的 TYPE 中。 但是,我不想通过键入两个表的所有列名来创建 TYPE。我尝试了以下方法,但它们都不起作用。

--1

RecA                 A%RowType
RecB                 B%RowType
FETCH Cur INTO RecA, RecB

--2

RecA                 A%RowType
RecB                 B%RowType
RecAB                A||B%RowType
FETCH Cur INTO RecAB

附:这个问题可以通过使用两个游标来解决,但我想知道有没有办法连接两个行类型。

【问题讨论】:

【参考方案1】:

阅读the fine manual:

explicit_cursor_name

显式游标的名称。对于与 explicit_cursor_name 关联的查询选择的每一列,记录都有一个具有相同名称和数据类型的字段。

所以你可以简单地说:

type cur_t is cur%rowtype;

另见the examples。

【讨论】:

以上是关于如何在 PL/SQL 中创建两个表的记录类型?的主要内容,如果未能解决你的问题,请参考以下文章

带有 PL SQL 的序列

如何在 PL/SQL 中创建一个以时间段递增的循环

在 Oracle PL/SQL 中创建触发器时如何解决“编译错误成功”错误?

尝试在 PL/SQL 中创建类型体,但不断出现错误

如何使用计算值更新带有 PL\SQL 的列

在 with 子句中创建包含 pl/sql 定义的 mview