如何通过名称获取表对象? (Oracle SQL)

时间:2015-01-28 23:05:08

标签: sql oracle

我试图通过按名称查询表格然后在这些表格中查询来查找数据库中特定的结果表子集。

我知道我可以得到这样的表格列表:

SELECT table_name FROM all_tables WHERE table_name LIKE 'MY_RESULTS_%'

但我无法弄清楚如何在另一个select语句中使用该列表。例如,我想做这样的事情:

-- DOESN'T WORK --
SELECT table_name FROM all_tables
WHERE table_name LIKE 'OUTPUTDATA_%'
AND get_table_by_name(table_name).my_value_col = 'Special Value';

这是在SQL Developer的Oracle数据库中。

1 个答案:

答案 0 :(得分:4)

Uese Dynamic SQL cursor

DECLARE
  CURSOR all_tables IS
    SELECT table_name
            FROM all_tables 
            WHERE TABLE_NAME like 'MY_RESULTS_%' 
            ORDER BY TABLE_NAME ;
row_count pls_integer;
BEGIN
  FOR rslt IN all_tables LOOP
    EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' 
     || rslt.TABLE_NAME || ' where ' 
     ||rslt.TABLE_NAME||'.my_value_col= ''Special Value''' INTO row_count;
  --here if the specific table.specificcolumn has the specific value print it  
  if row_count>=1 THEN
     BEGIN
       DBMS_OUTPUT.PUT_LINE(rslt.TABLE_NAME);
     END;
  END IF;
  END LOOP;
END;