当group by正在使用时返回空集(ORACLE SQL)

时间:2015-07-02 11:13:12

标签: sql oracle

我正在创建一个脚本,该脚本将来自用户的三个参数作为输入 我想检查是否给出参数以及数据库中是否存在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;
你能帮帮我吗? 提前致谢

1 个答案:

答案 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;