如何收集 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
答案 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
集合数据类型;您的光标正在获取基本对象类型,因此嵌套表似乎与问题完全无关。)