按查询提取数据
select * from ALL_ARGUMENTS
它将在 DATA_TYPE 列
中返回两种类型1- TABLE
2- PL / SQL TABLE
我已经检查了包含过程,两种类型都以类似的方式声明。
他们之间有什么区别?
示例 - 有声明
TYPE Bom_Revision_Tbl_Type是Bom_Revision_Rec_Type的表格 - PL / SQl TABLE
OBJECT_NAME PKG NAME ARGUMENT_NAME DATA_TYPE
PROCESS_BOM BOM_BO_PUB P_BOM_REVISION_TBL PL/SQL TABLE
TYPE inv_ebi_name_value_pair_tbl IS TABLE of inv_ebi_name_value_pair_rec - SQL TABLE
OBJECT_NAME PKG NAME ARGUMENT_NAME DATA_TYPE
ID_TO_VALUE INV_EBI_ITEM_HELPER P_PK_COL_NAME_VAL_PAIRS TABLE
答案 0 :(得分:3)
有three collection types in PL/SQL。
您的Bom_Revision_Tbl_Type
是associative array:
关联数组(以前称为PL / SQL表或索引表)是一组键值对。每个键都是唯一索引,用于使用语法variable_name(index)定位关联值。
它使用index by
子句定义。这仍然在all_arguments
中作为“PL / SQL表”报告,使用该集合类型的旧名称。
您的inv_ebi_name_value_pair_tbl
类型为nested table。
文档解释了它们之间的差异,以及每种类型何时合适; associative arrays:
关联数组适用于:
一个相对较小的查找表,每次调用子程序或初始化声明它的包时都可以在内存中构建
将集合传入和传出数据库服务器
在以下情况下,嵌套表是合适的:
未设置元素数。
索引值不是连续的。
您必须同时删除或更新某些元素,但不能删除所有元素。
嵌套表数据存储在单独的存储表中,这是一个系统生成的数据库表。访问嵌套表时,数据库将嵌套表与其存储表连接。这使得嵌套表适用于仅影响集合的某些元素的查询和更新。
您将创建一个单独的查找表,主表的每一行都有多个条目,并通过连接查询访问它。