Можно ли передать имя таблицы в SQL-запрос путем выбора запроса в Oracle - PullRequest
0 голосов
/ 21 января 2019

Можно ли передать имя таблицы запросу, используя результат другого запроса?

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 голосов
/ 21 января 2019

Это простой пример, основанный на схеме Скотта.

  • в строках 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...