是否可以通过oracle中的select查询将表名传递给SQL查询

时间:2019-01-21 11:07:06

标签: sql oracle

是否可以使用另一个查询的结果将表名传递给查询?

SELECT T.MID, T.TID, M.NAME 
FROM 'ONLINETRANSACTION@(' || SELECT ONLINEDBLINK FROM PARAMETERTABLE ||')' T
LEFT JOIN 'ONLINEMERCHANT@(' || SELECT ONLINEDBLINK FROM PARAMETERTABLE ||')' M 
ON T.MID = M.MID

我已经尝试了上面的代码,但是没有用。

1 个答案:

答案 0 :(得分:1)

这是一个基于Scott架构的简单示例。

  • 第5-7行选择您的“表名”(实际上,它似乎是您代码中的数据库链接名。没关系,原理相同)
  • 第9行使用该“表名”并将其与SELECT语句的其余部分连接;最后,它使用EXECUTE IMMEDIATE
  • 执行它

SQL> create table param (table_name varchar2(30));

Table created.

SQL> insert into param values ('EMP');

1 row created.

SQL> set serveroutput on
SQL> declare
  2    l_table_name param.table_name%type;
  3    l_max_sal    emp.sal%type;
  4  begin
  5    select table_name into l_table_name
  6      from param
  7     where rownum = 1;
  8
  9    execute immediate 'select max(sal) from ' || l_table_name into l_max_sal;
 10    dbms_output.put_line('Max salary = ' || l_max_sal);
 11  end;
 12  /
Max salary = 10000

PL/SQL procedure successfully completed.

SQL>