我已经创建了脚本,以便为多个表更新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;
请告诉我我做错了什么?