выберите из таблицы, если существует, выберите другой из оракула - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть несколько таблиц, в которых я выбираю столбцы из Пример:

select a.name, b.accno, c.bal
from tableA a, tableB b, tableC c
where a.id = d.id and a.id = c.id and a.accno ='12'

проблема в том, что tableC может быть недоступен в моей схеме. поэтому я хотел бы проверить, доступен ли tableC, в противном случае он должен использовать a.bal в таблице A.

Пожалуйста, как построить мой запрос на выборку для достижения этой цели. С уважением,

1 Ответ

0 голосов
/ 05 ноября 2018

Я предлагаю вам одно решение:

SELECT a.name, 
       b.accno, 
       fn_Bal(a.id, a.bal) as bal
  FROM tableA a 
  JOIN tableB b ON a.id = b.id 
 WHERE a.accno ='12';

с использованием функции для обработки исключения "Таблица или представление не существует":

create or replace function fn_bal(a_id in tableA.Id%TYPE,
                                  a_bal in tableA.bal%TYPE)
       return tableA.Bal%TYPE as

   table_does_not_exist exception;
   PRAGMA EXCEPTION_INIT(table_does_not_exist, -942);

   c_bal tableA.Bal%TYPE;

begin

  execute immediate
     'select bal
        from tableC
       where id = :1'
     into c_bal    
    using a_id;

   return c_bal;

exception
  when table_does_not_exist then
     return a_bal;
end;
...