【问题标题】:Documentum DQL Getting list subfolders from a few foldersDocumentum DQL 从几个文件夹中获取列表子文件夹
【发布时间】:2019-10-02 08:49:53
【问题描述】:

大家! 我本月开始使用 Documentum,这是我的问题。 有柜子的多选下拉列表。我必须选择其中一些才能在下面的结果列表中获取内部文件夹列表。 这个查询:

select * from dm_folder where folder(id($param$))

select * from dm_folder where folder($param$)

其中参数是对象名称

适用于单个下拉选择。 我试图插入“in”

select * from dm_folder where folder in($param$)

结果

[DM_QUERY_E_SYNTAX]error:  "A Parser Error (syntax error) has occurred in the vicinity of:  select * from dm_folder where folder in" 

select * from dm_folder where folder(id in($param$))

结果

select * from dm_folder where folder(id in ('0c0511d48000105',' 0c0511d48000106'))

[DM_QUERY_E_SYNTAX]error:  "A Parser Error (syntax error) has occurred in the vicinity of:  select * from dm_folder where folder(id in"

并在上面的查询中返回多值标志,但它不起作用。 有人可以帮忙吗?谢谢!

【问题讨论】:

  • 您能否添加更多关于您如何尝试插入 IN 的详细信息,以及它是如何不起作用的?目前尚不清楚您正在处理的问题是什么
  • 感谢您的评论,我已编辑帖子并添加了更多信息
  • 你的查询写错了,我会以正确的格式写答案
  • 你的意思是带有 CAPSLOCK 的 dql 选择器?
  • 查询中关键字字母的大写或小写无关紧要

标签: documentum emc documentum-dql


【解决方案1】:

试试这个:

SELECT * FROM dm_folder WHERE r_object_id IN ('0c0511d48000105',' 0c0511d48000106')

我认为你在哪里犯了错误很清楚。您使用的关键字 FOLDER 是接受单个值作为参数的函数。

来自 DQL 指南:

The FOLDER predicate
The FOLDER predicate identifies what folders to search. The syntax is:
[NOT] FOLDER(folder_expression {,folder_expression} [,DESCEND])
The folder_expression argument identifies a folder in the current repository. You cannot search a
remote folder (a folder that does not reside in the current repository). Valid values are:
• An ID function
• The ID function (described in The ID function, page 29) identifies a particular folder.
• A folder path
A folder path has the format:
/cabinet_name{/folder_name}
Enclose the path in single quotes. Because cabinets are a subtype of folder, you can specify a
cabinet as the folder.
• The keyword DEFAULT
The keyword DEFAULT directs the server to search the user’s default folder. Note that a user’s
default folder is the same as the user’s default cabinet (because cabinets are a subtype of folders).

编辑 1

SELECT * FROM dm_folder WHERE ANY i_folder_id IN ('0c0511d48000105',' 0c0511d48000106')

通过此查询,您正在查找其父级是指定为参数的任何文件夹的文件夹类型对象。

编辑 1

SELECT * FROM dm_folder WHERE i_cabinet_id IN (<list of ids>) 

这将返回文件柜下的所有文件夹对象

【讨论】:

  • 是的,在找到 FOLDER () 选择器的示例之前,我也尝试过...但它什么也没显示。虽然查询成功执行它说...
  • 好吧,现在语法没问题,但你需要处理语义 - 你想通过这个查询找出什么?
  • 好的。所以看起来我不能使用FOLDER,但我应该使用什么?正如您在我的问题帖子中看到的那样,我使用来自多选下拉列表的 $param$ 输入。在单选文件夹中完美运行。但是在这种情况下我应该改用什么呢?
  • 我想这就是你要找的。 i_folder_id 是一个多值字段,用于存储对象的父文件夹的 id。对象可以链接到多个文件夹 - 这是一个多值字段。这就是为什么我们需要在 where 子句中使用关键字 ANY
  • 在您指定的查询上下文中表达自己。你说的橱柜列表是WHERE子句中的id吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 2013-11-26
  • 2021-02-26
  • 1970-01-01
  • 2017-02-08
相关资源
最近更新 更多