SQL动态连接到用户/数据提供的表

SQL动态连接到用户/数据提供的表,sql,oracle,dynamic,join,oracle11g,Sql,Oracle,Dynamic,Join,Oracle11g,我想要像这样的东西: SELECT * from metric_data m, (SELECT table_for_join FROM join_tables WHERE from_table = 'usersupplied') u, WHERE m.id = u.id 这可能吗 如果有必要的话,我正在使用oracle 11g SELECT m.* from metric_data m LEFT JOIN join_tables u ON(m.id = u.id AND u.

我想要像这样的东西:

SELECT * from metric_data m, 
    (SELECT table_for_join FROM join_tables WHERE from_table = 'usersupplied') u,
    WHERE m.id = u.id
这可能吗

如果有必要的话,我正在使用oracle 11g

SELECT m.* from metric_data m LEFT JOIN join_tables u ON(m.id = u.id AND u.from_table='usersuplied') WHERE 1=1 从度量单位数据m中选择m.* 左联接表 ON(m.id=u.id和u.from_table='usersupplied') 其中1=1
我认为您需要使用动态sql。类似这样的东西(对不起,我现在无法测试它,但我希望它能工作

CREATE PROCEDURE getMetricData (in_table_name varchar2)
IS 
  real_tab_name varchar(32);
BEGIN
  SELECT table_for_join into real_tab_name 
  FROM join_tables WHERE from_table = in_table_name;
  IF (real_tab_name IS NOT NULL) THEN
  EXECUTE IMMEDIATE 'SELECT * from metric_data m, ' || real_tab_name || ' u 
   WHERE m.id = u.id';
  END IF;
END;

这没有任何意义,你确定你理解这个问题吗?“join_tables”不包含“id”列,而且我没有看到我实际加入的第三个动态表。这看起来很有希望,我今天稍后会测试