How to change below query to see results of my_sql (now I see only query, not it results) in SQL Developer?
DECLARE
my_sql VARCHAR(1000);
BEGIN
FOR t IN (SELECT t.table_name, t.owner FROM all_tables t where owner = 'O' )
LOOP
my_sql := 'select max(DATE) from ' || t.owner || '.' || t.table_name ;
dbms_output.put_line('executing: ' || my_sql);
EXECUTE IMMEDIATE my_sql;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('ERROR!! -- ' || SQLCODE || '-- ' || sqlerrm || ' --' );
END;
I want to get one value (in this case – max) from all tables (all tables have these same column).
Best Answer
The reason you are not seeing any results is that the FOR loop is not returning any rows as there is no owner called 'O'. To select all the table for a user who is not the logged in user you could use;
However you will get a failure almost immediately as MAX(DATE) suggests that every table has a column called DATE. Which is not true.
It looks like you probably want a list of all the tables for a specific list of users (not SYS or SYSTEM or any other 'system' account) with the latest date that a row was added or created or something else involving a date. To do that EVERY table for the schema must have the column you want to check.
SCHEMA1 / 2 / 3 are the users you know have the tables you are interested in and it assumes that each table has a'update_date' column.