我已经创建了脚本,以便为多个表更新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"期待以下之一:=。 (@%; The 符号":="取而代之的是" 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;
请告知我做错了什么?