DQL 查询返回 Documentum 文件柜中的所有文件?

Jas*_*her 6 sql database documentum dql dfc

我想从一个文件柜(称为“Wombat Insurance Co”)中检索所有文件。目前我正在使用这个 DQL 查询:

select r_object_id, object_name from dm_document(all) 
where folder('/Wombat Insurance Co', descend);
Run Code Online (Sandbox Code Playgroud)

这是可以的,除了它最多只返回 100 个结果。如果文件柜中有 5000 个文件,我想获得所有 5000 个结果。有没有办法使用分页来获得所有结果?

我试过这个查询:

select r_object_id, object_name from dm_document(all) 
where folder('/Wombat Insurance Co', descend) 
ENABLE (RETURN_RANGE 0 100 'r_object_id DESC');
Run Code Online (Sandbox Code Playgroud)

旨在以 100 个文件为增量获得结果,但是当我尝试执行该查询时,它给了我一个错误。错误是这样说的:

com.emc.documentum.fs.services.core.CoreServiceException: "QUERY" action failed.

java.lang.Exception: [DM_QUERY2_E_UNRECOGNIZED_HINT]error:  
"RETURN_RANGE is an unknown hint or is being used incorrectly."
Run Code Online (Sandbox Code Playgroud)

我想我正确地使用了 RETURN_RANGE 提示,但也许我没有。任何帮助,将不胜感激!

我也尝试过使用提示,ENABLE(FETCH_ALL_RESULTS 0)但这仍然最多只返回 100 个结果。

澄清一下,我的问题是:如何从机柜中获取所有文件?

Jas*_*her 2

啊哈,我已经弄清楚了。将 DFS 与 Java(DFC 之上的抽象层)结合使用,您可以设置查询结果的起始索引:

String queryStr = "select r_object_id, object_name from dm_document(all) 
                   where folder('/Wombat Insurance Co', descend);"

PassthroughQuery query = new PassthroughQuery();
query.setQueryString(queryStr);
query.addRepository(repositoryStr);

QueryExecution queryEx = new QueryExecution();
queryEx.setCacheStrategyType(CacheStrategyType.DEFAULT_CACHE_STRATEGY);
queryEx.setStartingIndex(currentIndex);      // set start index here

OperationOptions operationOptions = null;

// will return 100 results starting from currentIndex
QueryResult queryResult = queryService.execute(query, queryEx, operationOptions);
Run Code Online (Sandbox Code Playgroud)

您只需增加currentIndex变量即可获得所有结果。