我正在创建一个脚本,该脚本将来自用户的三个参数作为输入 我想检查是否给出参数以及数据库中是否存在table_name。 我遇到的问题是,因为我正在使用group by function if 没有给定表的列结果为空
我的代码是
SELECT COUNT(1),
Case
WHEN COUNT(1) > 0 THEN
NVL2(:a,
NVL2(:b,
NVL2(:name,
TO_CLOB('code1')
,'Error : name is required')
,'Error : b is required')
,'Error : a is required')
ELSE
TO_CLOB('Error : table name does not exist')
END
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME=UPPER(:name)
GROUP BY TABLE_NAME;
你能帮帮我吗?
提前致谢
答案 0 :(得分:0)
您需要创建一个虚拟表,其中包含一行输出传入的参数,然后将上面的查询连接到该表。 E.g:
select count(utc.table_name),
case when count(utc.table_name) > 0 then
nvl2(:a, nvl2(:b, nvl2(:name, to_clob('code1'),
'Error : name is required'),
'Error : b is required'),
'Error : a is required')
else to_clob('Error : table name does not exist')
end
from (select upper(:name) table_name from dual) d
left outer join user_tab_columns utc on (d.table_name = utc.table_name)
group by d.table_name;