42 lines
1.1 KiB
MySQL
42 lines
1.1 KiB
MySQL
|
SET SERVEROUTPUT ON
|
||
|
set feedback off
|
||
|
set define off
|
||
|
|
||
|
DECLARE
|
||
|
cur_validate INTEGER;
|
||
|
cnt_ INTEGER;
|
||
|
err_ VARCHAR2(32000);
|
||
|
sql_ VARCHAR2(32000);
|
||
|
obj_ VARCHAR2(19);
|
||
|
n_ INTEGER;
|
||
|
|
||
|
CURSOR get_object IS
|
||
|
SELECT object_name, object_type
|
||
|
FROM sys.User_Objects
|
||
|
WHERE object_type IN ('VIEW', 'PACKAGE', 'PACKAGE BODY')
|
||
|
AND status != 'VALID';
|
||
|
BEGIN
|
||
|
n_ := 0;
|
||
|
cur_validate := dbms_sql.open_cursor;
|
||
|
FOR c_ IN get_object LOOP
|
||
|
IF (c_.object_type = 'VIEW') THEN
|
||
|
obj_ := c_.object_type;
|
||
|
ELSE
|
||
|
obj_ := 'PACKAGE';
|
||
|
END IF;
|
||
|
sql_ := 'ALTER ' || obj_ || ' ' || c_.object_name || ' COMPILE';
|
||
|
dbms_sql.parse(cur_validate, sql_, DBMS_SQL.NATIVE);
|
||
|
cnt_ := dbms_sql.execute(cur_validate);
|
||
|
dbms_output.put_line('RECOMPILE: ' || sql_);
|
||
|
n_ := n_ + 1;
|
||
|
END LOOP;
|
||
|
dbms_sql.close_cursor(cur_validate);
|
||
|
IF (n_ > 0) THEN
|
||
|
dbms_output.put_line('RECOMPILE done !');
|
||
|
ELSE
|
||
|
dbms_output.put_line('Tidak Ada Object untuk di-recompile !');
|
||
|
END IF;
|
||
|
END;
|
||
|
/
|
||
|
|
||
|
SET SERVEROUTPUT OFF
|