Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果子查询不提供任何输出{Oracle},如何返回默认值_Sql_Oracle_Default - Fatal编程技术网

Sql 如果子查询不提供任何输出{Oracle},如何返回默认值

Sql 如果子查询不提供任何输出{Oracle},如何返回默认值,sql,oracle,default,Sql,Oracle,Default,如果我的子查询不提供任何输出,如何提供默认输出 select Id from (select ID, rank() over (partition by salary order by ID) as rw_num from emp ) a where a.rw_num > 10 您可以将异常处理与PL/SQL中的case选项no_data_一起使用: declare v_id emp.id%type; begin selec

如果我的子查询不提供任何输出,如何提供默认输出

select Id 
from (select ID, 
             rank() over (partition by salary order by ID) as rw_num 
      from emp
     ) a 
where a.rw_num > 10

您可以将异常处理与PL/SQL中的case选项no_data_一起使用:

declare
  v_id emp.id%type;
begin
  select Id
    into v_id
    from (select ID, rank() over(partition by salary order by ID) as rw_num
            from emp) a
   where a.rw_num > 10
 exception when no_data_found then v_id := 0;
end;
与所需默认输出的联合可能会有所帮助

原始子查询现在是数据CTE。第一个SELECT行6返回满足rw_num value条件的行。然后,它与另一个选择行10联合,该行使用与之前相同的rw_num条件下的NOT EXISTS

如果存在满足条件的特定行:

SQL> WITH
  2     data
  3     AS
  4        (SELECT ename, RANK () OVER (PARTITION BY deptno ORDER BY sal) rw_num
  5           FROM emp)
  6  SELECT ename
  7    FROM data
  8   WHERE rw_num > &&n
  9  UNION
 10  SELECT 'Nothing has been found'
 11    FROM DUAL
 12   WHERE NOT EXISTS
 13            (SELECT NULL
 14               FROM data
 15              WHERE rw_num > &&n);
Enter value for n: 4

ENAME
----------------------
ALLEN
BLAKE
如果没有:

SQL> undefine n
SQL> /
Enter value for n: 10

ENAME
----------------------
Nothing has been found

SQL>

谢谢你的评论,有没有一种方法可以在SQL查询中而不是PL/SQL中执行。谢谢!!没有工会我们能做点什么吗?可能是在案件陈述或类似的情况下?不客气。如果查询未返回任何未选择的行,则必须从某处获取默认值。CASE不会有帮助,NVL也不会,因为它不是缺少一个值,而是缺少整行。