Oracle PL/SQL记录和表变量已更改
我是Oracle PL/SQL的新手,已经收到一些要求我修改的代码。我一直在查看oracle文档,认为我知道它在做什么,但希望得到验证,以确定我的理解是否正确 代码如下:Oracle PL/SQL记录和表变量已更改,oracle,plsql,oracle12c,Oracle,Plsql,Oracle12c,我是Oracle PL/SQL的新手,已经收到一些要求我修改的代码。我一直在查看oracle文档,认为我知道它在做什么,但希望得到验证,以确定我的理解是否正确 代码如下: TYPE array_rec_type IS RECORD (gla_sub tblName.id%type); v_closes_sc array_rec_type; TYPE v_sc_type is TABLE OF v_closes_sc%TYPE INDEX BY BINARY_INTEGER; sc_ar
TYPE array_rec_type IS RECORD (gla_sub tblName.id%type);
v_closes_sc array_rec_type;
TYPE v_sc_type is TABLE OF v_closes_sc%TYPE INDEX BY BINARY_INTEGER;
sc_array v_sc_type;
以下是我认为在这里要宣布的内容:
TYPE array_rec_type IS RECORD (gla_sub tblName.id%type);
- 类型array\u rec\u TYPE为记录(gla\u sub-tblName.id%TYPE);
- 似乎正在使用tblName表中id列中的列类型声明集合。可以是数字或UUID等
- v_关闭_sc阵列_rec_类型;
- 正在创建新创建类型的变量
- 类型v_sc_TYPE是v_closes_sc%类型索引的表,由二进制_整数表示;
- 正在使用以前为表创建模板的集合(记录)创建新类型。该表将有一列ID
- sc_阵列v_sc_类型;
- 正在创建一个新变量来保存新表变量
- 记录不是集合,因此您的解释有点混乱。(您可能已经看过了:
在集合中,内部组件始终具有相同的数据类型,称为元素…要创建集合变量,可以定义集合类型,然后创建该类型的变量,或者使用
%type
在记录中,内部组件可以具有不同的数据类型,称为字段。您可以通过名称访问记录变量的每个字段…要创建记录变量,您可以定义记录
类型,然后创建该类型的变量,或者使用%ROWTYPE
或%type代码>
看看你说的话:
以下是我认为在这里要宣布的内容:
TYPE array_rec_type IS RECORD (gla_sub tblName.id%type);
这是一条记录,而不是一个集合。在本例中,它有一个名为gla_sub
的字段,实际上是使用tblName
表中id
列的数据类型来声明的。使用%type
意味着,在某种程度上,您不需要知道数据类型实际上是什么,也可能不需要知道如果代码发生更改,则必须更改代码(例如,如果varchar2
列的大小增加)
正确-正在创建新创建类型的变量
这是一个集合,特别是一个。它是一个稀疏数组,其成员是上面声明的记录类型的实例,具有数字索引。也可以直接使用该类型声明,如下所示:
TYPE v_sc_type is TABLE OF array_rec_type INDEX BY BINARY_INTEGER;
正确-正在创建刚声明的表类型的新变量
拥有一个带有单个字段的记录类型似乎有点毫无意义,因为您可以拥有一个基于表列数据类型的集合。但是,您现有的代码将期望这种结构,因此更改它并不是一件小事。记录不是一个集合,因此您的解释有点混乱。(您可能已经看过了:
在集合中,内部组件始终具有相同的数据类型,称为元素…要创建集合变量,可以定义集合类型,然后创建该类型的变量,或者使用%type
在记录中,内部组件可以具有不同的数据类型,称为字段。您可以通过名称访问记录变量的每个字段…要创建记录变量,您可以定义记录
类型,然后创建该类型的变量,或者使用%ROWTYPE
或%type代码>
看看你说的话:
以下是我认为在这里要宣布的内容:
TYPE array_rec_type IS RECORD (gla_sub tblName.id%type);
这是一条记录,而不是一个集合。在本例中,它有一个名为gla_sub
的字段,实际上是使用tblName
表中id
列的数据类型来声明的。使用%type
意味着,在某种程度上,您不需要知道数据类型实际上是什么,也可能不需要知道如果代码发生更改,则必须更改代码(例如,如果varchar2
列的大小增加)
正确-正在创建新创建类型的变量
这是一个集合,特别是一个。它是一个稀疏数组,其成员是上面声明的记录类型的实例,具有数字索引。也可以直接使用该类型声明,如下所示:
TYPE v_sc_type is TABLE OF array_rec_type INDEX BY BINARY_INTEGER;
正确-正在创建刚声明的表类型的新变量
拥有一个带有单个字段的记录类型似乎有点毫无意义,因为您可以拥有一个基于表列数据类型的集合。但是,您现有的代码将需要这种结构,因此更改它并不简单。感谢您提供的详细答案。感谢您提供的详细答案。