小编Bes*_*ces的帖子

(Oracle)使用分页查询时如何获得结果总数?

我正在使用Oracle 10g和以下范例来获取15个结果的页面(因此当用户查看搜索结果的第2页时,他们会看到记录16-30).

select * 
  from 
( select rownum rnum, a.*
    from (my_query) a
   where rownum <= 30 )
where rnum > 15;
Run Code Online (Sandbox Code Playgroud)

现在我必须运行一个单独的SQL语句来对"my_query"执行"select count"以获取my_query的结果总数(这样我就可以向用户显示它并使用它来弄清楚总页数等).

有没有办法获得结果的总数而不通过第二个查询,即从上面的查询中获取它?我已经尝试添加"max(rownum)",但它似乎不起作用(我得到一个错误[ORA-01747]似乎表明它不喜欢我在组中有关键字rownum).

我希望从原始查询中获取此信息而不是在单独的SQL语句中执行此操作的理由是"my_query"是一个昂贵的查询,所以我宁愿不运行它两次(一次得到计数,一次得到数据页面)如果我不需要; 但是,如果可能的话,我可以在单个查询中获得结果数量(同时获取我需要的数据页面)的任何解决方案都不应该增加很多额外的开销.请指教.

这正是我正在尝试做的事情,因为我认为它不喜欢我在组中使用ROWNUM,因此我收到了ORA-01747错误.注意,如果有另一种解决方案不使用max(ROWNUM),而是使用其他方法,那也完全没问题.这个解决方案是我第一次想到什么可行.

 SELECT * FROM (SELECT r.*, ROWNUM RNUM, max(ROWNUM)
 FROM (SELECT t0.ABC_SEQ_ID AS c0, t0.FIRST_NAME, t0.LAST_NAME, t1.SCORE
 FROM ABC t0, XYZ t1
 WHERE (t0.XYZ_ID = 751) AND 
 t0.XYZ_ID = t1.XYZ_ID 
 ORDER BY t0.RANK ASC) r WHERE ROWNUM <= 30 GROUP BY r.*, ROWNUM) WHERE RNUM > 15
Run Code Online (Sandbox Code Playgroud)

---------编辑--------注意,基于第一个评论,我尝试了以下似乎工作.我不知道它与其他解决方案相比表现如何(我正在寻找满足我的要求但表现最佳的解决方案).例如,当我运行它需要16秒.当我取出COUNT(*)OVER()RESULT_COUNT时,只需7秒钟:

    SELECT * FROM (SELECT r.*, …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle10g

18
推荐指数
1
解决办法
4万
查看次数

我可以在Python PIP中使用Artifactory吗?

我可以使用Pip从Artifactory中提取Python工件吗?

我看到我可以使用Python在Artifactory中放置工件,但是如果我想使用pip从中提取工件呢?

python pip artifactory

15
推荐指数
1
解决办法
2万
查看次数

如何验证网页是否被gzip压缩?

我计划配置weblogic的gzip servlet过滤器(使用weblogicx-gzip.jar)来gzip我的网页.

如何验证页面是否被发送到客户端gzip压缩?

gzip weblogic gzipstream

14
推荐指数
1
解决办法
7298
查看次数

如何返回与使用Java 6传入的类相同类型的对象的实例?

我想返回一个传入的Class对象的相同类型对象的实例.传入的类型可以是ANYTHING.有没有办法用Generics做到这一点?

澄清 - 我不希望方法的调用者不必转换为他们传入的对象的类

例如,

public Object<Class> getObject(Class class)
{
  // Construct an instance of an object of type Class

  return object;
}

// I want this:
MyClass myObj = getObject(MyClass.class);

// Not this (casting):
MyClass myObj = (MyClass)getObject(MyClass.class);
Run Code Online (Sandbox Code Playgroud)

java generics

14
推荐指数
2
解决办法
3万
查看次数

是否应该首先将命名分支合并到默认分支中,反之亦然?

我有一个中央回购和当地回购.repo具有"默认"分支和一个名为branch"mybranch"的分支.如果我在命名分支中工作并希望偶尔将我的更改合并为默认值,然后继续在命名分支中工作,我应该这样做:

  1. 从中央仓库最新到我当地的仓库
  2. 在mybranch中工作时,执行" hg merge default"以合并默认的INTO mybranch
  3. 在本地提交
  4. 然后执行" hg update default"和" hg merge mybranch"合并mybranch INTO默认值
  5. 在本地提交
  6. 推到中央回购OR

与上面相同,但用#4切换#2?(这样我首先合并mybranch INTO默认值?

mercurial

13
推荐指数
2
解决办法
5654
查看次数

处理AJAXified组件的JSF 2.0异常的正确方法是什么?

我已经设置了web.xml,以便任何java.lang.Throwable(即任何未捕获的异常或错误)将转发到错误页面.但是,对于AJAXified组件,异常不会通过此机制路由到错误页面.

我所拥有的测试用例是一个简单CommandButton的操作方法,它总是抛出一个RuntimeException.看起来最好的做法是让action方法捕获异常并添加FacesMessage类型错误严重性.这是人们做的吗?有没有办法配置JSF,以便如果AJAXified组件的支持bean方法抛出异常,可以显示错误页面?

ajax exception-handling jsf-2

13
推荐指数
1
解决办法
2万
查看次数

JSF 2.0 View Scope后退按钮安全吗?

JSF 2.0 View Scope"后退按钮"安全吗?例如,如果我在View Scope中存储模型并从第1页,第2页,第3页到第4页,沿途修改模型对象(通过输入字段),然后点击后退按钮两次返回页面2并进行更改(再次转到第3页),视图范围中的模型是否仅包含最初呈现第2页时所做的更改,还是后续页面的更改?

Oracle ADF具有/称之为"进程范围"的东西,它通过标记放置到会话中的内容来处理此问题,因此每个页面都有自己的模型副本.

jsf-2

12
推荐指数
1
解决办法
8745
查看次数

为什么&符号(&)需要在JSF中编码?有没有解决的办法?

我经常在我的JSF XHTML页面上有Javascript,其中包含&&,我最终必须编码为 &amp;&amp;

例如,当我将以下内容放在我的JSF XHTML页面文件中时:

I am an & sign
Run Code Online (Sandbox Code Playgroud)

我收到错误:

The entity name must immediately follow the '&' in the entity reference
Run Code Online (Sandbox Code Playgroud)

解决这个问题的一种方法似乎是将'&'更改为&amp;我认为不喜欢写'''.

对于我在Javascript中使用'&'的情况,我也可以将Javascript包装在CDATA标签中; 当包装在CDATA标签中时,我可以编写'&'而不必将其转义为&amp;,这是一个很好的解决方法,可以在我的页面上具有更可读的Javascript代码.

但是当我想在页面上的其他地方使用文字'&'而不在<script>标签内时会发生什么呢?因此不能轻易地将代码包装在CDATA标签中?对于这些案件,我必须总是逃避'&' &amp;吗?

注意尝试使用转义值的能力,似乎无法解决问题

jsf-2

12
推荐指数
1
解决办法
1万
查看次数

如果新构建在管道中等待,如何强制Jenkins跳过下游作业?

我在Jenkins的构建管道分为三个部分:

  1. 构建代码
  2. 将代码部署到环境中
  3. 运行自动功能测试

我已经设置了它,以便可以发生并发构建,如果#2或#3当前正在为另一个构建运行,构建管道将阻止构建进入#2.

我希望能够做的是设置Jenkins以便在有多个构建等待时进行处理,并且#2和#3完成,因为只有LATEST构建才能进入#2和#3.

有没有办法开箱即用?如果您有"持续交付"一书,我正在尝试做的是实现p上的内容.118 - p.119

jenkins

12
推荐指数
1
解决办法
9169
查看次数

如何在重新启动时让weblogic重新加载缓存的JSP

我们为weblogic(11g)部署新版app的方法是复制现有ear文件的顶部,然后停止并重新启动weblogic服务器.我们开始/停止weblogic而不是重新部署,因为已知的permgen问题(最终我们将耗尽perm gen并且必须退回weblogic服务器).

但是,这种部署方法有一个缺点 - weblogic看不到新的JSP版本.为了解决这个问题,我们不得不在重启服务器之前清除tmp目录中维护已编译JSP缓存的内容.是否有一个设置可以告诉weblogic在启动备份时擦除缓存/重新加载/重新编译JSP?

weblogic weblogic11g

10
推荐指数
2
解决办法
1万
查看次数