首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环DBMS_STATS

循环DBMS_STATS
EN

Stack Overflow用户
提问于 2016-11-14 10:26:56
回答 2查看 236关注 0票数 1

我只是想学点新东西。我只是做了个实验,用循环来分析桌子。但是,我发现错误的地方

对变量'indx‘的无效引用

。如果我拿出DBMS_STATS‘的东西’,只是为了打印结果,它是有效的。但是当我试图分析这些表时,错误出现了。

代码语言:javascript
复制
 CREATE OR REPLACE PROCEDURE ANALYZE_TABLE
    AS
        CURSOR table_cur IS
            SELECT  TABLE_NAME
            FROM    ALL_TABLES
            WHERE TABLE_NAME LIKE 'STUDENT%';

        table_nm table_cur%ROWTYPE;
        TYPE table_nms IS TABLE OF table_nm%TYPE;
        l_table  table_nms;
    BEGIN
        OPEN  table_cur;
        FETCH table_cur BULK COLLECT INTO l_table;
        CLOSE table_cur;

        FOR indx IN 1..l_table.COUNT LOOP
            IF (indx.table_name = 'STUDENT_DETAILS') THEN 
        dbms_stats.gather_table_stats(ownname => 'ADMIN', tabname => indx.table_name , estimate_percent => 100, 
        method_opt => 'for all indexed columns size auto',
        degree => 4 ,cascade => TRUE );
            ELSIF (indx.table_name = 'STUDENT_ALLOWANCE' OR indx.table_name = 'STUDENT_PAYMENT') 
          THEN
            DBMS_STATS.GATHER_TABLE_STATS (ownname =>  'ADMIN', tabname => indx.table_name , estimate_percent => 100, 
        method_opt => 'for all indexed columns size auto',
        degree => 4 ,cascade => TRUE );
          ELSE
            DBMS_STATS.GATHER_TABLE_STATS (ownname =>  'ADMIN', tabname => indx.table_name , estimate_percent => 100, 
        method_opt => 'for all indexed columns size auto',
        degree => 4 ,cascade => TRUE );
          END IF;
            --DBMS_OUTPUT.PUT_LINE(l_table(indx).TABLE_NAME);
        END LOOP;
    END ANALYZE_TABLE;

有什么建议吗?还是用这个循环分析表的更好方法?谢谢你帮我的忙。:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-14 10:35:26

您需要引用数组的内容,而不是循环索引。循环索引告诉您数组中的哪个元素。所以:

代码语言:javascript
复制
IF (l_table(indx).table_name = 'STUDENT_DETAILS') THEN

诸若此类

票数 1
EN

Stack Overflow用户

发布于 2016-11-14 10:35:54

您应该按以下方式引用表中的值:

代码语言:javascript
复制
 if (l_table(indx).table_name = 'STUDENT_DETAILS') ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40586527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档