收集嵌套表的统计信息

时间:2021-03-15 10:29:20

标签: oracle plsql

如何收集 Oracle 包中使用的嵌套表的统计信息。那可能吗? 我已经通过 GTT 完成了,但无法对嵌套表类型对象执行相同的操作。

create or replace TYPE "TO_CNF_PYE_BSE_OBJ" AS OBJECT(
    FAP_INR_IDR        VARCHAR2(50)
);
create or replace TYPE "TO_CNF_PYE_BSE_TYP" AS TABLE OF TO_CNF_PYE_BSE_OBJ;

在代码内部,我使用集合从 to_cnf_bse_pye 中选择记录作为嵌套表类型:

CURSOR lv_cur (p_in_del_cri_days NUMBER) IS SELECT to_cnf_pye_bse_obj(fap_inr_idr) FROM to_cnf_pye_bse 

1 个答案:

答案 0 :(得分:2)

是的,嵌套表就是另一个表:

CREATE TYPE string_list AS TABLE OF VARCHAR2(20);

CREATE TABLE table_name (
  id   NUMBER,
  data string_list
) NESTED TABLE data STORE AS table_name__data;

然后你可以这样做:

BEGIN
  DBMS_STATS.GATHER_TABLE_STATS( 'SCHEMA_NAME', 'TABLE_NAME__DATA');
END;
/

db<>fiddle here


更新

<块引用>

内部代码我使用集合从 to_cnf_bse_pye 中选择记录作为嵌套表类型:

CURSOR lv_cur (p_in_del_cri_days NUMBER) IS SELECT to_cnf_pye_bse_obj(fap_inr_idr) FROM to_cnf_pye_bse

不,DBMS_STATS package 没有任何收集游标统计信息的方法。

但是,您可以收集基础 to_cnf_pye_bse 表的统计信息。

(顺便说一句,您没有使用 TO_CNF_PYE_BSE_TYP 集合数据类型;您的光标正在获取基本对象类型,因此嵌套表似乎与问题完全无关。)

相关问题