Как указал Вернфрид, EXEC
не так.Вы можете вызвать более одной процедуры в начальном конечном блоке:
BEGIN
DBMS_STATS.SET_TABLE_PREFS ('DW_FEI', 'BMI_SALES_FACT', 'INCREMENTAL', 'TRUE');
DBMS_STATS.SET_TABLE_PREFS ('DW_FEI', 'AP_OPEN_HEADER_RAY', 'INCREMENTAL', 'TRUE')
DBMS_STATS.SET_TABLE_PREFS ('DW_FEI', 'AP_OPEN_HEADER_FACT', 'INCREMENTAL', 'TRUE');
END;
/
И вам не нужно COMMIT
, DBMS_STATS
(и все другие операторы DML) делать это автоматически (или неявно)для тебя.В качестве доказательства:
CREATE TABLE t (i NUMBER);
SELECT * FROM USER_TAB_STAT_PREFS WHERE table_name='T';
BEGIN
DBMS_STATS.SET_TABLE_PREFS (NULL, 'T', 'INCREMENTAL', 'TRUE');
END;
/
(в другой сессии:)
SELECT * FROM USER_TAB_STAT_PREFS WHERE table_name='T';
TABLE_NAME PREFERENCE_NAME PREFERENCE_VALUE
T INCREMENTAL TRUE