sql – Oracle:获取一个查询,始终只返回一行,即使没有数据可以
发布时间:2020-12-12 06:43:29 所属栏目:MsSql教程 来源:网络整理
导读:我有这样的查询: select data_name into v_name from data_table where data_table.type = v_t_id 通常,此查询应该只返回一行.当v_t_id上没有匹配项时,程序将失败并显示“No data found”异常. 我知道我可以在PL / SQL中处理这个问题,但我想知道是否有办法只
我有这样的查询:
select data_name into v_name from data_table where data_table.type = v_t_id 通常,此查询应该只返回一行.当v_t_id上没有匹配项时,程序将失败并显示“No data found”异常. 我知道我可以在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不相同).这甚至是可能的还是我应该检查我的PL / SQL解决方案? (oracle 10g) 解决方法有办法使这更简单,更清洁,但这基本上说明了技术: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 ) 当union的第一部分为空时,第二部分将包含一行,当第一部分不为空时,第二部分将不包含任何行. 如果查询需要花费很多时间,请使用以下内容: 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何处理这个错误(1049,“未知数据库”/ users / ohyunjun
- 如何将SQLServer2012的数据库导入到SQLServer2008中
- 数据库 – 我应该删除(SQL和DB)什么吗?
- sqlserver巧用row_number和partition by分组取top数据
- sql-server – 使SqlClient默认为ARITHABORT ON
- 简单的SQL Server备份脚本代码
- sqlserver不让改变某列长度和类型解决方法
- 使用SSIS创建同步数据库数据任务的方法
- sqlserver2005移动tempdb位置
- SQL Server索引中include的魅力[具有包含性列的索引]