我有多个表,我从中选择列 示例:
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是否可用,否则它应该在tableA中使用a.bal。
请如何构建我的选择查询以实现此目的。 问候
答案 0 :(得分:0)
我建议您采用一种解决方法:
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;