当前位置: 首页 > 面试题库 >

Oracle:获取查询以始终仅返回一行,即使找不到数据也是如此

郎意
2023-03-14
问题内容

我有这样的查询:

   select data_name
   into v_name
   from data_table
   where data_table.type = v_t_id

通常,此查询应仅返回一行。如果没有匹配项v_t_id,则程序将失败,并显示“找不到数据”异常。

我知道我 可以 在PL / SQL中处理此问题,但是我想知道是否有一种方法只能在查询中执行此操作。作为测试,我尝试了:

select case
           when subq.data_name is null then
            'UNKNOWN'
           else
            subq.data_name
       end
from (select data_name
       from data_table
       where data_table.type = '53' /*53 does not exist, will result in 0 rows. Need fix this...*/
       ) subq;

…但这显然不起作用(因为subq为空与并不相同subq.data_name isnull)。这是否有可能,还是我应该只检查我的PL /SQL解决方案?

(甲骨文10克)


问题答案:

有多种方法可以使此方法更简单,更简洁,但这基本上说明了该技术:

SELECT data_name
FROM data_table
WHERE data_table.type = v_t_id

UNION ALL

SELECT NULL AS data_name
FROM dual
WHERE NOT EXISTS (
    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id
)

当联合的第一部分为空时,第二部分将包含一行;当第一部分不为空时,第二部分将不包含任何行。

如果查询要花很多时间,请使用以下命令:

SELECT * FROM (  
    SELECT data_name
    FROM data_table
    WHERE data_table.type = v_t_id

    UNION ALL

    SELECT NULL AS data_name
    FROM dual
  ) WHERE data_name is not null or ROWNUM = 1


 类似资料:
  • 我正在尝试使用JDBC连接到DB2数据库。JDBC连接成功,但在执行查询时,它返回Exception。在进一步分析时,返回以下错误: 错误代码-30025本地化错误消息->;DSN12015:*:V12R1M502;0600;0002 任何能在这方面指导我的人都将是一个很大的帮助! 当使用Tomcat在服务器中运行相同的Eclipse时,将返回相同的错误(404)。

  • 问题内容: 此代码仅返回一行,但应返回2行。我在phpMyAdmin中尝试了SQL,它完美返回了2行。我在这里做错了什么? 顺便说一句,上面的代码通过以下脚本将程序移至profile.php: 问题答案: 您需要遍历结果(如TheSmose所述) 并且 您需要将结果数组发送到模板而不是。 改变这个 对此 如果您不只是想要模板中的内容(并且您不需要PHP> = 5.3 ),那么您将需要在循环内构建自

  • 在我的Vue应用程序中,我有一组股票: 我还有一个条件元素,如下所示: 我有一个为股票设置测试属性的方法。例如: 如果在此声明下,我我看到第一的属性。但是,在模板中,当具有此属性时应该显示的元素仍未显示。为什么会这样,我该如何根据库存元素是否具有属性来动态显示/隐藏它们?

  • 我对Laravel很陌生,尤其是在从数据库检索东西时。在阅读了他们关于query builder的文档后,我找到了一个部分,其中显示了执行我所需操作的示例代码: 如果不需要整行,可以使用value方法从记录中提取单个值。此方法将直接返回列的值:

  • 我有一个静态的AuthProvider类,它集中了所有的身份验证。 我有以下注册码。 在应用程序上注册后,我收到了一封验证电子邮件,所以我点击了它。当我下次尝试登录时,isEmailVertify返回false。经过一些研究,我认为我应该重新加载用户对象,如下所示: 不幸的是,isEmailVerified仍然返回false。有人知道为什么会这样吗?

  • 问题内容: 我使用Struts2 + JSP + Tomcat6+Hibernate+Mysql作为我的J2EE应用程序框架。按照这个]主题,我遇到了出现此错误的问题: 看来是由于mysql在n小时后关闭了它的连接。当人们回答时,我更改了hibernate配置以通过JNDI获得数据库连接。这是我采取的操作步骤: 我的hibernate.cfg.xml: 我放入META-INF详细信息中的conte