我已经创建了脚本,以便为多个表更新DBMS_STATS.SET_TABLE_PREFS . 我试图以SYS和scheme用户身份运行此脚本,在这两种情况下我都会收到以下错误:

第27行的错误:ORA-06550:第27行,第8列:PLS-00103:当期望下列之一时遇到符号“DBMS_STATS”::= . (@%;符号“:=”代替“DBMS_STATS”继续.ORA-06550:第28行,第8列:PLS-00103:遇到以下其中一项时遇到符号“DBMS_STATS”:: = . ( @%;符号“:=”代替“DBMS_STATS”继续 .

当我只使用DBMS_OUTPUT.PUT_LINE输出表名时,我没有收到任何错误 .

DECLARE 
    TYPE TABLE_NAME_TABLE IS TABLE OF USER_PART_TABLES.TABLE_NAME%TYPE;
    lv_TablesList           TABLE_NAME_TABLE;
    lv_Vc2_TableName        VARCHAR2(100);

    CURSOR tables IS 
                SELECT DISTINCT
                                DBA_TABLES.TABLE_NAME
                            FROM
                                DBA_TABLES
                            WHERE
                                DBA_TABLES.OWNER='MYUSER' AND DBA_TABLES.PARTITIONED = 'YES';
BEGIN 

OPEN tables;
FETCH tables BULK COLLECT INTO lv_TablesList;
CLOSE tables;

   FOR I IN 1 .. lv_TablesList.COUNT LOOP


    DBMS_OUTPUT.PUT_LINE('Update settings for ' || TO_CHAR(lv_TablesList(I)));
    EXEC DBMS_STATS.SET_TABLE_PREFS('MYUSER',TO_CHAR(lv_TablesList(I)),'INCREMENTAL','TRUE');
    EXEC DBMS_STATS.SET_TABLE_PREFS('MYUSER',TO_CHAR(lv_TablesList(I)),'GRANULARITY','AUTO');
    DBMS_OUTPUT.PUT_LINE('Updated settings for ' || TO_CHAR(lv_TablesList(I)));

   END LOOP;

END;

请告诉我我做错了什么?