4
SQL Server能够返回一个往返多个查询结果,e.g:多个结果,没有refcursors
select a, b, c from y;
select d, e, f from z;
Oracle不喜欢这种语法。它是可以使用的参考指针,就像这样:
begin
open :1 for select count(*) from a;
open :2 for select count(*) from b;
end;
但是,你招致开启/关闭游标一个点球,你可以保存数据库锁较长时间。我想要做的是使用Odp.net一次性检索这两个查询的结果。可能吗?
在oracle中,选择不锁。无论如何,游标都是隐式使用的,所以我认为除了网络往返之外,你不会节省很多。 – 2010-03-23 22:45:11
@加里网络往返费用昂贵。如果您在SQL Server中的一个命令中运行多个查询,您的性能会得到显着提升,特别是如果您一次执行很多操作。我不明白为什么在Oracle中这是不可能的。 Oracle如何在不锁定的情况下支持可重复读取? – 2010-03-24 07:28:27
Oracle使用多版本并发控制。基本上它保留了所做更改的历史记录(至少与最早的活动事务一样),并且如果它遇到已更改的数据,它将查看历史记录以查看查询开始时数据的状态。 SQL Server 2005添加了它并称之为快照隔离。 – 2010-03-24 22:51:10