我在sybase方面有很好的经验,并开始在空闲时间研究oracle。我使用过的大多数 sybase 过程都有临时表,连接两个或多个临时表以获得结果集是有意义的。
问题:有没有办法像逻辑表一样连接两个或多个游标。
就像是:
SELECT c1.id,
c2.name
FROM cursorEmp c1,
CursorDept c2
WHERE c1.DeptId = c2.DeptId
我在sybase方面有很好的经验,并开始在空闲时间研究oracle。我使用过的大多数 sybase 过程都有临时表,连接两个或多个临时表以获得结果集是有意义的。
问题:有没有办法像逻辑表一样连接两个或多个游标。
就像是:
SELECT c1.id,
c2.name
FROM cursorEmp c1,
CursorDept c2
WHERE c1.DeptId = c2.DeptId
你不能加入两个游标,不。
当然,您可以结合两个基础查询,即
SELECT c1.id,
c2.name
FROM (SELECT * FROM emp WHERE ename = 'KING') c1,
(SELECT * FROM dept WHERE dname = 'ACCOUNTING') c2
WHERE c1.DeptID = c2.DeptID
在 Oracle 中,由于读取器不会阻塞写入器(反之亦然),因此很少需要使用临时表。您通常只需使用适当的视图来查询基础表,以提供适当的抽象级别。
Oracle 确实有自己的临时表版本(在事务或会话期间存储临时数据的永久结构) - 您可以考虑使用它们,尽管(正如贾斯汀建议的那样)您也可以组合两个底层查询。