【问题标题】:Fields Phrase Sometimes Ignored in Dynamic Query动态查询中有时会忽略字段短语
【发布时间】:2015-07-20 11:19:21
【问题描述】:

在 Progress 9.1e 中,我使用动态查询来提取可扩展的数据。

我正在使用表单的查询

FOR EACH tableName FIELDS( fieldName1 fieldName2 ) NO-LOCK
  WHERE fieldName3 = "Value"
    AND fieldName4 = "AnotherValue"

对于其中一些查询,特别是表中字段很少的查询,字段短语正在工作并且仅检索请求的内容。

然而,在其他查询中,有趣的是那些更长、更复杂的字段列表(包括数组等),它会检索整个记录。

我已经阅读了有关检索联接所需的其他字段的各种讨论,但我已经简化了查询,因此这不是问题。

查询指定无锁,get-next 参数也是如此,因此排他锁的完整记录也不应该是相关的。

Progress 是否有其他标准决定选择整条记录,有没有办法阻止它?

【问题讨论】:

  • 您应该关心检索到的 FIELDS 的唯一时间是通过慢速网络连接以最大程度地减少网络流量。
  • @TimKuehn - 这可能是预期用途,但我正在尝试构建一个动态查询过程,该过程允许提取额外数据的配置以用于“未来打样”,并且进度动态查询不'没有 SELECT 短语,FIELDS 似乎是仅提取所选记录中所需字段的唯一选项。否则,我将不得不在其他地方的配置中包含必填字段列表,这并不理想。
  • 我不知道您将如何让 FIELDS 做您正在寻找的事情 - 根据 10.2B 文档:“当您指定字段列表时,AVM 可能会检索附加字段或完整记录,具体取决于检索操作的类型和提供记录的 DataServer。”实质上,记录短语的 FIELDS 部分是 AVM 可以出于各种原因覆盖的建议。
  • 9.1 版的未来校对似乎是一个奇怪的想法,因为 9.1e 来自很久以前......
  • @Tim #1,我必须恭敬地不同意(尽管不是大声疾呼)。我们观察到在远程 AppServer 和并行运行并通过超高速网络连接的 DB 服务器之间使用 FIELDS 时,速度存在显着差异。我们实际上并没有经常使用 FIELDS,而且我还在犹豫是否值得额外的复杂性。

标签: progress-4gl


【解决方案1】:

我不知道这个问题的答案,恐怕你可能得不到答案,因为运行此类旧 Progress 版本的人经常被忽略。

您可以将 FIELDS 与动态查询一起使用,这对我来说是个新闻,但是,文档暗示这是真的。

我很好奇你是怎么知道它检索整个记录的,除非你是数据包嗅探之类的?

无论如何,您可以检查以下几点:

  • fldisable 启动参数
  • rereadfields 启动参数
  • 与 EXCEPT 混淆
  • Progress 知识库,但是我只是快速检查了一下,找不到任何有用的东西。我依稀记得某些版本中的一个错误,其中你的问题敲响了警钟

祝你好运。

【讨论】:

  • 您好,谢谢!我知道检索到的内容的方法是我通过缓冲区,获取 hBuf:BUFFER-FIELD(i),然后检查 hFld:AVAILABLE。当字段短语有效时,我只会得到一两个可用字段。当它不起作用时 - 我得到了整个记录。我希望能够使用字段短语来选择要查询的字段。
  • 直到您可以在字段上使用 AVAILABLE !谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-10-15
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多