Oracle子查询未返回记录

问题描述:

我们主要使用SQL Server进行查询,但似乎在我们使用Java时,它会在Oracle引擎中运行。在this question中,我询问了从多个表中统计记录的SQL Server方法,因为大部分时间SQL Server与Oracle运行时相同。我能够从中得到查询返回的数据:Oracle子查询未返回记录

declare @count table (count1 int, count2 int, count3 int) 
INSERT INTO @count 
select (SELECT COUNT(*) FROM Bike), 
(SELECT COUNT(*) FROM Car), 
(SELECT COUNT(*) FROM Truck) 
select * from @count; 

但是把这个在Java中,当我得到的是没有记录返回一个错误。任何想法我可以在这里做什么来解决这个问题?

+0

甲骨文没有表变量,所以我被你实际运行的代码弄糊涂了。 –

+0

不管我运行的代码是什么,我需要知道的是如何在一个查询中获取三个独立表的计数。 –

+0

我更喜欢通过将查询存入存储过程来分离我的java和我的sql。如果你能让你的sql直接在数据库上工作,那么我认为在一个存储过程中运行将是一个值得探索的策略。 – mba12

在Oracle中,你需要使用dual表:

select (SELECT COUNT(*) FROM Bike), 
     (SELECT COUNT(*) FROM Car), 
     (SELECT COUNT(*) FROM Truck) 
from dual; 

如果您需要在一行中返回这些值,那么下面应该在任何数据库工作:

select b.bcnt, c.ccnt, t.tcnt 
from (SELECT COUNT(*) as bcnt FROM Bike) b cross join 
    (SELECT COUNT(*) as ccnt FROM Car) c cross join 
    (SELECT COUNT(*) as tcnt FROM Truck) t; 
+0

第二个查询为我做了。非常感谢! –